我正在尝试在elasticsearch 1.3.5中使用update api。我有以下文档,我正在尝试更新:
{
"_index": "geocode",
"_type": "google",
"_id": "kolb dfsafa 303 46546456 z ",
"_version": 8,
"_score": 1,
"_source": {
"results": [
{"formatted_address": "kolb 303, 46546456 dfsafa-dfsafa-d",
"geometry": {
"location": {
"lat": 35.0360533,
"lng": 14.5632209
},
"location_type": "ROOFTOP"
},
"types": [
"street_address"
]
}
],
"status": "OK"
}
}
我有以下脚本:
POST /geocode/google/kolb%20dfsafa%20303%2046546456%20z%20/_update
{
"script":"ctx._source.results.geometry.location.lat==latitude",
"lang": "groovy",
"params":{
"latitude" : 0.0
}
}
我想将lat位置更新为0.0。 Api调用成功完成(版本增加等),但没有更新。
{
"_index": "geocode",
"_type": "google",
"_id": "kolb dfsafa 303 46546456 z ",
"_version": 9
}
任何提示在哪里看?
答案 0 :(得分:1)
由于结果是数组,您需要将其作为数组进行处理。请记住,您正在处理原始_source而不是字段数据缓存中的数据。这意味着您需要使用正确的JSON路径。
POST /geocode/google/kolb%20dfsafa%20303%2046546456%20z%20/_update
{
"script":"ctx._source.results[0].geometry.location.lat=latitude",
"lang": "groovy",
"params":{
"latitude" : 0.0
}
}
有关此用例的更多信息以及有关Update API的更多示例,请参阅此link