我不小心创建了一个字段,其中包含使用Bulk API更新嵌套文档的句点。现在,我的文档有一个嵌套文档和一个具有相同结构的字段名称。例如,结构类似于以下内容:
{
"foo":{
"bar": 123
},
"foo.bar": 123
}
当我对索引进行查询时,这会导致问题。如何使用顶级字段“foo.bar”查找文档并删除它们?
答案 0 :(得分:1)
您可以使用partial update call中的脚本来实现此目的:
curl -XPOST http://localhost:9200/myindex/mytype/123/_update -d '{
"script" : "ctx._source.remove(\"foo.bar\")"
}'
更新:如果您需要为包含该字段的所有文档删除该字段,那么使用update-by-query plugin的另一个解决方案。一次性,您可以指定要更新的文档以及匹配文档中的更新内容,如下所示:
curl -XPOST localhost:9200/myindex/_update_by_query -d '{
"query" : {
"filtered" : {
"filter" : {
"exists": {"field": "foo.bar"}
}
}
},
"script" : "ctx._source.remove(\"foo.bar\")"
}'