首页 > 其他分享 >Elasticsearch Terms Aggregation 根据某一项的聚合

Elasticsearch Terms Aggregation 根据某一项的聚合

时间:2022-10-08 21:08:34浏览次数:56  
标签:count upper Terms doc Aggregation Elasticsearch error 文档 size



根据某一项的每个唯一的值的聚合。
举例:

{
"aggs" : {
"genres" : {
"terms" : { "field" : "genre"}
}
}
}

返回

{ 
"aggregations" : {
"genres" : {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets" : [
{
"key" : "jazz",
"doc_count" : 10},
{
"key" : "rock",
"doc_count" : 10},
{
"key" : "electronic",
"doc_count" : 10},
]
}
}
}

上面 ,对于genre 这个字段,对它里面的各个值的文档数量进行统计。
doc_count_error_upper_bound 未知
sum_other_doc_count 当有大量不同值时,ES只返回数量最多的项。这个数字表示有多少文档的统计数量没有返回。
默认情况,对于某一项的聚合,只会返回数量最高的10项,通过调整size参数,可以控制默认的行为。
我测试到,令size=0时候,会返回所有的项。

Size
size参数用来指定在列表中返回多少项。如果该项的值的个数要大于这个size ,那么返回的结果可能会不准确,有轻微的误差。甚至文档数最多的那个值没有的返回。

文档的数量是大约的量
文档的数量是不准确的,只是一个大概值。因为每个分片给出它排好的前n的部分,然后再把各个分片的结果联合成最后的结果。
官方文档给了一个非常好的例子,还有几张表格,说明造成这个情况的原因。可以自己跳过去阅读以下就明白了。这一切的原因都是因为 ES是一个分布式的存储方式。

Shard size
取得size的值越大,结果会越接近准确,当然这样导致的负载也会越高(因为更多的查询和节点之间大数据量的传输)。
默认shard_size是等于size的。如果shard_size 取更大的值,结果会更准确。

计算文档数错误

有两个错误值会显示在项的聚合上,第一个doc_count_error_upper_bound ,给出个没有被算进最后的结果的最大可能的数字。这个表明在最坏情况下,有doc_count_error_upper_bound 这么多文档个数的一个值被遗漏了。 这就是doc_count_error_upper_bound (文档数错误上界)这个参数的意义。

每个桶里的错误数
如果设置show_term_doc_count_error这个参数为ture,还会对每个 bucket都显示一个错误数,表示最大可能的误差情况。

而且,如果不是按照排序的话,这个错误是算不出来的,这时候,会给一个-1来表示这种有错,但是不知道错误边界的情况。

Order
用order参数可以做排序,默认是按照doc_count倒序排列的。
可以改变默认情况
“order” : { “_count” : “asc” } 这是按照doc_count升序排列
“order” : { “_term” : “asc” } 这是按照字母表升序排列。


标签:count,upper,Terms,doc,Aggregation,Elasticsearch,error,文档,size
From: https://blog.51cto.com/u_15815563/5738694

相关文章

  • 乘风破浪,遇见云原生(Cloud Native)之Docker安装运行Elasticsearch v7.17.6/v8.4.3、Ki
    什么是Elasticsearchhttps://www.elastic.co/cn/elasticsearch/Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP......
  • NETCORE - ElasticSearch 搜索服务
                                            引用:https://www.cnblogs.com/qiect/arti......
  • 安装elasticsearch
    安装elasticsearch1.部署单点es1.1.创建网络因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:dockernetworkcreatees-net1.2.加载......
  • docker 安装 elasticsearch
    1.拉取镜像:sudodockerpullelasticsearch:7.12.02.创建docker容器挂载目录:sudomkdir-pv/opt/elasticsearch/configsudomkdir-pv/opt/elasticsearch/datasu......
  • Elasticsearch 进阶检索 (一)
    1、官方文档https://www.elastic.co/guide/en/elasticsearch/reference/7.4/index.htmlSearchAPIES支持两种基本方式检索:一个是通过使用RESTrequestURL发送搜索......
  • Elasticsearch 初步检索
    1丶_catGET/_cat/nodes:查看所有节点GET/_cat/health:查看es健康状况GET/_cat/master:查看主节点GET/_cat/indices:查看所有索引相当于showdatabase查......
  • ElasticSearch Head
    ElasticSearchHead在谷歌浏览器安装ElasticSearchHead谷歌浏览器----右上角---扩展程序---搜索ElasticSearchHead插件基于插件可以查看ElasticSearch相关数据和集......
  • Docker 安装 Elasticsearch
    1、下载镜像文件#存储和检索数据dockerpullelasticsearch:7.4.2#可视化检索数据dockerpullkibana:7.4.22、创建实例1、创建数据卷映射目录及相关配置mkdir-p......
  • ElasticSearch-7.10版本最新万字长文教程【距离搞懂ELK核心你只差这一片文章】
    ES万字长文教程​​一、认识ELK、ES​​​​1.什么是ELK?​​​​2.什么是ElasticSearch​​​​3.ElasticSearch下载安装教程​​​​二、索引的CRUD​​​​1.创建索引​​......
  • Elasticsearch搜索引擎的使用
    Elasticsearch搜索引擎的使用1.需求分析当用户在搜索框输入关键字后,我们要为用户提供相关的搜索结果。这种需求依赖数据库的模糊查询like关键字可以实现,但是like关键字......