使用Elastic4s客户端查找索引中特定字段的所有不同值

时间:2019-05-23 13:49:55

标签: elasticsearch elastic4s

如何使用elastic4s获取特定字段的所有不同值?

JSON中的示例

GET persons/_search
{
 "size":"0",
 "aggs" : {
  "uniq_gender" : {
   "terms" : { "field" : "Gender" }
   }
  }
}

1 个答案:

答案 0 :(得分:0)

使用terms aggregation

它看起来像这样:

    index: 'test',
    body: {
        "aggs": {
            "uniq_gender": {
                "terms": {"field": "Gender"}
            }
        }
    },

响应看起来有点像:

{
  "uniq_gender": {
    "doc_count_error_upper_bound": 0,
    "sum_other_doc_count": 0,
    "buckets": [
      {
        "key": "male",
        "doc_count": 55
      },
      {
        "key": "female",
        "doc_count": 38
      },
      {
        "key": "other",
        "doc_count": 1
      }
    ]
  }
}

文档中的重要注意事项:

  

terms聚合应该是关键字类型或适用于存储桶聚合的任何其他数据类型的字段。为了与文本一起使用,您将需要启用字段数据。

表示如果将性别字段索引为文本,则必须在映射上将字段数据设置为true,请here了解如何操作。