因为我在弹性搜索(2.x)中有以下数据
所有json消息都存储在名为" test"
的相同索引下{"message_id": "1", "severity": "info"}
{"message_id": "1", "severity": "info"}
{"message_id": "1", "severity": "info"}
{"message_id": "1", "severity": "info"}
{"message_id": "2", "severity": "critical"}
{"message_id": "2", "severity": "critical"}
{"message_id": "2", "severity": "critical"}
{"message_id": "2", "severity": "critical"}
每个json已被复制4次。有什么方法可以在弹性serch中运行删除查询并仅保留
{"message_id": "1", "severity": "info"}
{"message_id": "2", "severity": "critical"}
答案 0 :(得分:0)
您确定,重复的邮件是否真的存储了?请记住,那4个JSON
{"message_id": "1", "severity": "info"}
{"message_id": "1", "severity": "info"}
{"message_id": "1", "severity": "info"}
{"message_id": "1", "severity": "info"}
与:
相同{"message_id": "1", "severity": "info"}
应用相同的JSON(PUT),将导致用更新的弹性搜索文档替换弹性搜索文档。
答案 1 :(得分:0)
步骤1:首先需要使用聚合查找所有重复项:
curl -XGET 'http://localhost:9200/test/type1/_search?pretty=true' -d '{
"size": 0,
"aggs": {
"duplicateCount": {
"terms": {
"field": "message_id",
"min_doc_count": 2
},
"aggs": {
"duplicateDocuments": {
"top_hits": {}
}
}
}
}
}'
步骤2:获得重复项列表后,运行循环以在所有这些文档上调用DELETE,并在步骤1中返回“_id”。