如何在不知道字段值的情况下,通过字段名在ElasticSearch中获取重复字段值

r9f1avp5  于 2022-11-28  发布在  ElasticSearch
关注(0)|答案(2)|浏览(139)

我在ElasticSearch索引中有一个字段“EmployeeName”,我想执行一个查询,该查询将返回“EmployeeName”存在重复值的所有情况。可以做到这一点吗?
我找到more_like_this,但这需要“like_text”的字段值。但我的要求是获得有重复姓名的员工列表,而不知道其值。

{
    "more_like_this" : {
        "fields" : ["EmployeeName"],
        "like_text" : "Mukesh",
        "min_term_freq" : 1,
        "max_query_terms" : 12
    }
}

提前致谢
问候穆克什

1dkrff03

1dkrff031#

您可以使用Terms Aggregation来执行此操作。

POST <index>/<type>/_search?search_type=count
{
    "aggs": {
        "duplicateNames": {
            "terms": {
                "field": "EmployeeName",
                "size": 0,
                "min_doc_count": 2
            }
        }
    }
}

这将返回字段EmployeeName中至少在2个文档中出现的所有值。

xn1cxnb4

xn1cxnb42#

这将是具有当前Elasticsearch版本的查询:

GET <index>/_search
{
  "size": 0,
  "aggs": {
    "duplicateNames": {
       "terms": {
         "field": "EmployeeName",
         "min_doc_count": 2
       }
     }
  }
}

相关问题