【发布时间】:2019-11-20 20:30:38
【问题描述】:
我正在使用按查询更新插件 (https://github.com/yakaz/elasticsearch-action-updatebyquery/) 通过查询更新文档。 在我的例子中,文档中有嵌套字段,映射是这样的:
"mappings": {
"mytype": {
"properties": {
"Myfield1": {
"type": "nested",
"properties": {
"field1": {
"type": "string"
},
"field2": {
"type": "long"
}
}
},
"Title": {
"type": "string"
}
}
}
}
然后我想通过以下请求通过查询更新嵌套字段Myfield1:
但不幸的是,它不起作用。
{
"query": {
"match": {
"Title": "elasticsearch"
}
},
"script": "ctx._source.Myfield1 = [{'nestfield1':'foo blabla...','nestfield2':100},{'nestfield1':'abc...','nestfield2':200}]"
}
查询更新是否支持嵌套对象?
顺便说一句:还有其他通过查询更新文档的方法吗?
查询插件更新是唯一的选择吗?
【问题讨论】:
-
嗯,我很确定,您可以在没有任何插件的情况下更新文档,只需索引具有相同 ID 的文档 - 它将被替换
-
是的,我可以按 id 部分更新文档。但是我首先需要知道要更新的每个文档的确切 ID。所以我更喜欢“通过查询更新”,这样我就可以通过查询任何字段来更新文档。
-
也许这个答案会有所帮助。 stackoverflow.com/a/53192844/3838328
标签: elasticsearch