java - 使用 Java API 更新 ElasticSearch 索引中的嵌套字段

标签 java json elasticsearch

我在 elasticsearch 上使用 Java API 进行 CRUD 操作。

我有一个带有嵌套字段的类型,我想更新这个字段。

这是我的类型映射:

"enduser": {
            "properties": {
                "location": {
                    "type": "nested",
                    "properties":{
                        "point":{"type":"geo_point"}
                    }
                }
            }
        }

当然我的最终用户类型会有其他参数。

现在我想在我的嵌套字段中添加此文档:

"location":{
          "name": "London",
           "point": "44.5, 5.2"
}

我正在搜索有关如何更新嵌套文档的文档,但找不到任何内容。例如,我在一个字符串中有前一个 JSON 对象(我们称这个字符串为 json)。我尝试了以下代码,但似乎无法正常工作:

params.put("location", json);
client.prepareUpdate(index, ElasticSearchConstants.TYPE_END_USER,id).setScript("ctx._source.location = location").setScriptParams(params).execute().actionGet();

我收到来自 elasticsearch 的解析错误。任何人都知道我做错了什么?

最佳答案

您不需要脚本,只需更新它即可。

    UpdateRequestBuilder br = client.prepareUpdate("index", "enduser", "1");
    br.setDoc("{\"location\":{ \"name\": \"london\", \"point\": \"44.5,5.2\" }}".getBytes());
    br.execute();

关于java - 使用 Java API 更新 ElasticSearch 索引中的嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23363801/

相关文章:

java - Java异常抛出对象并从catch中获取对象

java - jersey2 单元测试,HttpServletRequest 为空

date - 多个字段的 Elasticsearch 日期范围聚合

java - 从图库中选取图像时出现 FileNotFoundException

java - 如何从通过串行端口接收的数据创建 BufferedImage

Python:更改列表类型以进行 json 解码

java - 在java中将json数组值分配给字符串数组

c# - 如何实现将复杂类型序列化/反序列化为简单类型的 Newtonsoft JSON 转换器

elasticsearch - Elasticsearch 的替代异常检测引擎

elasticsearch - 在前端进行搜索操作时获取数据计数