需求背景
- 由于数据入库时发生一些错误,导致录入重复数据到es内
第一种办法
-
根据单个字段进行查询重复数据
POST index/type/_search
{
“size”: 10,
“aggs”: {
“duplicateCount”: {
“terms”: {
“field”: “link”,
“min_doc_count”: 10
},
“aggs”: {
“duplicateDocuments”: {
“top_hits”: {}
}
}
}
}
}
size : hits中展示的数据
min_doc_count : link重复数量大于10的
嵌套里面的那个aggs : 标识再把duplicateDocuments的细节展示出来 -
根据多个字段进行查询重复数据
{
“size”: 0,
“aggs”: {
“duplicateCount”: {“terms”: {
“script”: “doc[‘name’].values + doc[‘employeeID’].values+doc[‘organisation’].values”,
“min_doc_count”: 2
},
“aggs”: {}
“duplicateDocuments”: {
“top_hits”: {}
}
}
}
}
参考链接-https://qbox.io/blog/minimizing-document-duplication-in-elasticsearch
实操过程
- 根据以上步骤查询出来重复数据的link字段和重复数据的数量
- 使用delete_by_query删除数据(size填重复数据数量-1)