es 分组聚合返回结果不正确

问题现象

在对es做group by分组聚合查询时,数据返回不正确,只能显示十条。但是应该有14个分组。

查询语句:

GET /hadoop_impala*/_search
{
  "aggs": {
    "qyeryTypes": {
      "terms": {
        "field": "hostId"
      }
    }
  }
}

查询结果:

"aggregations": {
    "qyeryTypes": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 611,
      "buckets": [
        {
          "key": "dx-hadoop62.dx",
          "doc_count": 877
        },
        {
          "key": "dx-hadoop60.dx",
          "doc_count": 828
        },
        {
          "key": "dx-hadoop61.dx",
          "doc_count": 703
        },
        {
          "key": "dx-hadoop58.dx",
          "doc_count": 637
        },
        {
          "key": "dx-hadoop68.dx",
          "doc_count": 611
        },
        {
          "key": "dx-hadoop64.dx",
          "doc_count": 474
        },
        {
          "key": "dx-hadoop69.dx",
          "doc_count": 449
        },
        {
          "key": "dx-hadoop70.dx",
          "doc_count": 230
        },
        {
          "key": "dx-hadoop65.dx",
          "doc_count": 211
        },
        {
          "key": "dx-hadoop59.dx",
          "doc_count": 179
        }
      ]
    }

问题原因:

因为es聚合操作的size参数规定了最后返回的term个数(默认是10个)

解决方案:

在es查询里添加size参数,如下:

GET /hadoop_impala*/_search
{
  "aggs": {
    "qyeryTypes": {
      "terms": {
        "field": "hostId",
        "size": 1000
      }
    }
  }
}

再次查询,结果能正常返回

"aggregations": {
    "qyeryTypes": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "dx-hadoop62.dx",
          "doc_count": 893
        },
        {
          "key": "dx-hadoop60.dx",
          "doc_count": 840
        },
        {
          "key": "dx-hadoop61.dx",
          "doc_count": 713
        },
        {
          "key": "dx-hadoop58.dx",
          "doc_count": 647
        },
        {
          "key": "dx-hadoop68.dx",
          "doc_count": 611
        },
        {
          "key": "dx-hadoop64.dx",
          "doc_count": 474
        },
        {
          "key": "dx-hadoop69.dx",
          "doc_count": 459
        },
        {
          "key": "dx-hadoop70.dx",
          "doc_count": 230
        },
        {
          "key": "dx-hadoop65.dx",
          "doc_count": 214
        },
        {
          "key": "dx-hadoop63.dx",
          "doc_count": 183
        },
        {
          "key": "dx-hadoop59.dx",
          "doc_count": 181
        },
        {
          "key": "dx-hadoop57.dx",
          "doc_count": 165
        },
        {
          "key": "dx-hadoop56.dx",
          "doc_count": 152
        },
        {
          "key": "dx-hadoop67.dx",
          "doc_count": 137
        }
      ]
    }
  }

扩展:

  • size参数规定了最后返回的term个数(默认是10个)
  • shard_size参数规定了每个分片上返回的个数
  • 如果shard_size小于size,那么分片也会按照size指定的个数计算

通过这两个参数,如果我们想要返回前5个,size=5;shard_size可以设置大于5,这样每个分片返回的词条信息就会增多,相应的误差几率也会减小。

参考:https://www.cnblogs.com/tgzhu/p/9167170.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值