elasticsearch - ElasticSearch在删除空格和特殊字符后查找所有重复项

标签 elasticsearch

我们的 Elasticsearch 集群中大约有100,000个文档。我试图找到一个查询,以便我们可以根据某些字段找出重复的文档。
我可以运行此查询:

{
  "size": 0,
  "aggs": {
     "duplicateCount": {
        "terms": {
          "field": "name",
          "min_doc_count": 2
        },
        "aggs": {
          "duplicateDocuments": {
          "top_hits": {}
         }
     }
  }
}

但是我们的某些文件具有相似的值(value)。例如,两个不同的文档具有名称:“pawan”和名称:“paw-an”,我们希望将它们视为同一文档。我找不到任何说出replaceAll的方法,然后运行此查询。有什么办法吗?我们使用的是ElasticSearch 1.5,因此对于此类功能而言可能太旧了。谢谢。

对应:
{
  "mappings":{
            "employeeinfo":{
                        "_all" : {"enabled" : true},
                        "properties":{
                                    "name":{
                                              “type":"string"
                                    },
                                    "age":{
                                                "type":"long"
                                    }
                        }
            }
 }
}

问候,
wan

最佳答案

可以使用script in your terms aggregation代替字段名:

{
  "size": 0,
  "aggs": {
     "duplicateCount": {
        "terms": {
          "script": "_source.name.replaceAll('-', '')",
          "min_doc_count": 2
        },
        "aggs": {
          "duplicateDocuments": {
          "top_hits": {}
         }
     }
  }
}

关于elasticsearch - ElasticSearch在删除空格和特殊字符后查找所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51664334/

相关文章:

oracle - Elasticsearch + 甲骨文 JDBC 河

elasticsearch - ElasticSearch 中的复合词处理 - 将 "splitted"和 "joined"形式视为相同

elasticsearch - 在Elasticsearch中查找与整个查询匹配的文档

elasticsearch - Elastic Search 7.6.2中的随机文档-弃用警告消息

elasticsearch - Elasticsearch一半时间都能获得成功

elasticsearch - elasticsearch _all字段到底包含什么?

php - parsing_exception:没有为[已过滤]注册任何[查询]

regex - 模式不匹配流利 Elasticsearch

elasticsearch - ElasticSearch:按嵌套文档进行复杂过滤

c# - 单例对象中的多个 Elasticsearch 连接在 Controller 类中获取一个特定的单例 Elasticsearch