我在 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/