如何使用elasticsearch中的脚本比较字段和删除字段?

时间:2015-06-05 06:39:20

标签: elasticsearch

我想比较两个字段并检查它们是否相同。如果发现它们相等,我需要从文档中删除其中一个字段。 如何通过使用脚本在elasticsearch中实现这一点?

2 个答案:

答案 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)

您可以使用scriptsupdate by script来执行此操作。它可以通过使用过滤器来完成,首先比较字段,然后使用"删除"删除任何所需的字段。方法如下:

{
  "query": {
    "filtered": {
      "filter": {
        "script": {
          "script": "doc[\"fieldA\"].value == doc[\"fieldB\"].value"
}
      }
    }
  },
  "script": "ctx._source.remove(\"fieldA\");"
}