Elasticsearch删除重复项

FUD*_*FUD 12 elasticsearch

一些记录在由数字字段标识的索引中重复recordid.

elasticsearch中有delete-by-query,我可以用它来删除任何一个重复记录吗?

或者其他一些方法来实现这一目标?

Tom*_*art 5

是的,您可以使用聚合查询找到重复的文档:

curl -XPOST http://localhost:9200/your_index/_search -d '
 {
  "size": 0,
  "aggs": {
    "duplicateCount": {
      "terms": {
        "field": "recordid",
        "min_doc_count": 2,
        "size": 10
      },
      "aggs": {
        "duplicateDocuments": {
          "top_hits": {
            "size": 10
          }
        }
      }
    }
  }
}'
Run Code Online (Sandbox Code Playgroud)

然后最好使用批量查询删除重复的文档。查看es-deduplicator用于自动删除重复项(免责声明:我是该脚本的作者)。

注意:聚合查询可能非常昂贵,并且可能会导致节点崩溃(如果索引太大而数据节点数量太小)。