Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

Elasticsearch FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/elasticsearch-count-distinct-values.html

es 获取某个字段所有值及其个数的方法

Elasticsearch 笔记 Elasticsearch 笔记


elasticsearch(es)如何获取某个字段的所有不同的值及其对应的个数?

解决方法

针对如上需求,可以使用 elasticsearch 聚合(aggs)功能中的桶聚合模块,其中提供了 Terms Aggregation 子模块,Terms Aggregation 用于词项的分组聚合。最为经典的用例是获取 X 中最频繁(top frequent)的 term filed value,其中 X 是文档中的某个字段,具体示例如下:

{
  "aggs": {
    "word_cnt terms": {
      "terms": { // terms 聚合 关键字
        "field": "word_cnt",
        "size" : 500,
        ......
      }
    }
  }
}

返回类似如下:

{
  "took": 152,
  "timed_out": false,
  "_shards": {
    "total": 8,
    "successful": 8,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 940089,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "word_cnt terms": {
      "doc_count_error_upper_bound": 25,
      "sum_other_doc_count": 22718,
      "buckets": [
        {
          "key": 0,
          "doc_count": 6723
        },
        {
          "key": 100,
          "doc_count": 4674
        },
        {
          "key": 98,
          "doc_count": 4582
        },
        {
          "key": 103,
          "doc_count": 4557
        },
        {
          "key": 90,
          "doc_count": 4511
        }
        ...
      ]
    }
  }
}      

其中,key 对应不同的值,doc_count 对应文档个数,默认情况下按照文档的个数降序,即 "order": { "_count": "asc" },如果要根据文档个数升序,示例如下:

{
  "aggs": {
    "word_cnt terms": {
      "terms": { // terms 聚合 关键字
        "field": "word_cnt",
        "size" : 500,
        "order": { "_count": "asc" }
        ......
      }
    }
  }
}

 

Elasticsearch 如何快速获取索引(index)中所有的字段信息? ...
###方式一:使用文档更新APIElasticsearch提供了文档更新API,您可以使用它来更新文档的部分内容,而无需完全替换整个文档。以 ...
以下是一些常见的方法,包括使用内置函数、列表解析、循环等方式,并对它们进行详细介绍、示例和总结比较。###方法一:使用内置方法count() ...
elasticsearch(es)获取指定索引(index)的所有文档的 id 的方法,这里的 id 指的是 es 文档内部定义的 _id。 ...
在Elasticsearch中,要获取一个索引的所有文档,可以使用Elasticsearch提供的RESTAPI或者相应的客户端库来实现。使 ...