ES执行报错:too_many_clause

org.springframework.data.elasticsearch.ElasticsearchException: 
Cannot execute jest action , response code : 500 , error : 
{
  "root_cause": [
    {
      "type": "too_many_clauses",
      "reason": "too_many_clauses: maxClauseCount is set to 1024"
    }
  ],
  "type": "search_phase_execution_exception",
  "reason": "all shards failed",
  "phase": "dfs",
  "grouped": true,
  "failed_shards": [
    {
      "shard": 0,
      "index": "test",
      "node": "mX6IENzdRwCEhOwAsvJlmQ",
      "reason": {
        "type": "too_many_clauses",
        "reason": "too_many_clauses: maxClauseCount is set to 1024"
      }
    }
  ]
}
 , message : null

问题原因:
bool 查询拼接太多了,有一个拼接上限,es默认设置为1024

解决方法:

方案一:当超过1024时可以将一个bool查询拆成两个子bool查询,使用must关键字,使得两个子bool查询是与的关系
方案二:编辑elasticsearch.yml,添加如下配置
    index.query.bool.max_clause_count: 10240
    注意:必须在最前面添加一个空格,即和其他配置首字母对齐,不然es启动报错。
方案三:由于索引分词使用了同义词,可以将查询分词和索引分词分开,单独设置查询分词
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值