elasticsearch-es查询并清理重复数据

需求背景

  • 由于数据入库时发生一些错误,导致录入重复数据到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)

你可能感兴趣的:(python,elasticsearch)