我想比较两个字段并检查它们是否相同。如果发现它们相等,我需要从文档中删除其中一个字段。 如何通过使用脚本在elasticsearch中实现这一点?
答案 0 :(得分:4)
使用update-by-query plugin,您可以轻松实现这一目标。该插件允许用户传递查询以匹配文档和脚本来修改匹配的文档。所以在你的情况下,你可以像这样使用它:
curl -XPOST localhost:9200/your_index/your_type/_update_by_query -d '
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc.field1.value == doc.field2.value"
}
}
}
},
"script": "ctx._source.remove(\"field2\");"
}'
答案 1 :(得分:2)
您可以使用scripts和update by script来执行此操作。它可以通过使用过滤器来完成,首先比较字段,然后使用"删除"删除任何所需的字段。方法如下:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc[\"fieldA\"].value == doc[\"fieldB\"].value"
}
}
}
},
"script": "ctx._source.remove(\"fieldA\");"
}