环境:ElasticSearch6.7
问题描述:

{ "error": { "root_cause": [], "type": "search_phase_execution_exception", "reason": "", "phase": "fetch", "grouped": true, "failed_shards": [], "caused_by": { "type": "too_many_buckets_exception", "reason": "Trying to create too many buckets. Must be less than or equal to: [10000] but was [10001]. This limit can be set by changing the [search.max_buckets] cluster level setting.", "max_buckets": 10000 } }, "status": 503 }

设置:这是6.x版本才有的特性,目的:限制大批量聚合操作,规避性能风险。
解决方案:setting里设置:search.max_buckets
问题分析:
这是因为查询结果在分片上找到的条目超过了限定的10000个,官网限制在10000是为了其性能考虑的。需要调大search.max_buckets这个参数。我们先来做如下一个测试:

测试
1、前提: search.max_buckets: 3

PUT /_cluster/settings
{"persistent": {"search.max_buckets": 3}}

2、插入了"A",“B”,“C”,“D” 4条数据

PUT /testBucket/_doc/1
{"term":"A"}
PUT /testBucket/_doc/2
{"term":"B"}
PUT /testBucket/_doc/3
{"term":"C"}
PUT /testBucket/_doc/4
{"term":"D"}

要分两种情况来说明:

2.1、 索引只有一个分片(分片可以自己在setting设置,)
这时候不管你设不设size,哪怕size=1都会报错!
原因就是上面说的那个,因为它在这个分片上找到的条目超过了限定的3个(实际有4个)

POST /testBucket/_search
{"aggs":{"term":{"terms":{"field":"term","size":2}}}

2.2、 如果这个索引有5个分片,数据分散在各个分片上面

index                          shard prirep state   docs  store ip        node
a                              1     p      STARTED    1    3kb 127.0.0.1 es0
a                              3     p      STARTED    1    3kb 127.0.0.1 es0
a                              4     p      STARTED    1    3kb 127.0.0.1 es0
a                              2     p      STARTED    0   208b 127.0.0.1 es0
a                              0     p      STARTED    1    3kb 127.0.0.1 es0

这时如果你设size=2,就不会报错。
因为还没有等它找完全部分片,他就找到了你想要的2个,就返回了。

如果你不设size,或者设一个大值size=10,它就必须找完全部分片,
这时就会遇到限定3,就会报错

所以这和你的数据在分片上的分布有关,
解决办法还是加大search.max_buckets

所以最初问题的解决方法是:

PUT /_cluster/settings
{"persistent": {"search.max_buckets": 20000}}

如果还不够,你你把它调大到1000000000应该是可以了( ﹁ ﹁ ) ~→
官网地址:
https://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket.html

相关讨论:https://github.com/elastic/elasticsearch/pull/27581

ElasticSearch的search.max_buckets值1000限制问题相关推荐

  1. elasticsearch:调用接口设置search.max_buckets的值

    elasticsearch:调用接口设置search.max_buckets的值 public class ElasticsearchBucketsTest {private static final ...

  2. ElasticSearch利用Search After解决深度分页问题

    ElasticSearch利用Search After解决深度分页问题 1.ElasticSearch常见分页 2.ElasticSearch深度分页问题 3.ElasticSearch深度分页问题的 ...

  3. python search返回值_python正则表达式--match search方法

    1.re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None. (1)函数语法: re.match(pattern,str ...

  4. 【JavaScript编程】window.location.search 返回值为空

    一.Location 对象 window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. 二.属性hash和search的区别 属性 描述 location.h ...

  5. 解决ES search.max_buckets参数问题

    Trying to create too many buckets. Must be less than or equal to: [65535] but was [65536]. This limi ...

  6. Elasticsearch之search搜索入门

    1. 搜索语法入门 1.1query string search 无条件搜索所有 GET /book/_search {"took" : 969,"timed_out&q ...

  7. elasticsearch 深入 —— Search After实时滚动查询

    Search After 一般的分页需求我们可以使用form和size的方式实现,但是这种分页方式在深度分页的场景下应该是要避免使用的.深度分页会随着请求的页次增加,所消耗的内存和时间的增长也是成比例 ...

  8. Elasticsearch(五)----search搜索详解

    一.字符串查询(query string search) 1.全搜索 timeout参数:是超时时长定义.代表每个节点上的每个shard执行搜索时最多耗时多久.不会影响响应的正常返回.只会影响返回响应 ...

  9. Elasticsearch之Search API

    Search API 实现对es中存储的数据进行查询分析,endpoint为 _search,如下图所示: 查询主要有两种形式 - URI Search - 操作简便,方便通过命令行测试 - 仅包含部 ...

最新文章

  1. Ubuntu安装nodeJS
  2. 【实习项目记录】(一)加密算法MD5和RSA
  3. 【错误记录】编译 Linux 内核报错 ( fatal error: openssl/opensslv.h: No such file or directory )
  4. Struts2 随笔1
  5. Oracle 数据恢复指导具体解释
  6. boost::fusion::erase用法的测试程序
  7. .Net Core和Jexus配置HTTPS服务
  8. 三位数除以两位数怎么算竖式_青岛版三年级上册数学5.6三位数除以一位数(最高位商后有余数)微课知识点精讲+练习...
  9. ubuntu下定时任务的执行
  10. centos 增加分区容量
  11. DeepWalk: Online Learning of Social Representations-2
  12. 《具体数学》学习建议
  13. 香农编码的gui编码_编码香农编码
  14. plist序列帧合图导出单独的图片
  15. php txt投票功能,php查询操作实现投票功能
  16. STM32F103ZET6+TJA1050 HAL CAN通讯笔记
  17. 使用tushare获取股票历史交易数据
  18. 51NOD 1631 小鲨鱼在51nod小学 区间线段树
  19. 百度快照优化推广五大坑
  20. 2022年吉林省高职单招(语文)考试冲刺练习及答案

热门文章

  1. abstract函数必须重写
  2. awr报告 解读_【数据库】解读Oracle AWR性能分析报告
  3. samba(smb服务)实现网络文件共享
  4. Python学习系列 -- 改善 Python 程序的 91 个建议
  5. POI和EasyExcel导入导出Excel表格
  6. 继续继续.......
  7. 1.1计算机组成结构:CPU组成、冯·诺依曼结构与哈佛结构、嵌入式芯片术语
  8. 产业分析:私域流量白皮书
  9. R里面的tryCatch
  10. 关于ShareSDK在Xcode14上面发生错误的相关解决办法