ES execution error: 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

Cause of the problem:
There are too many splicing bool queries, there is an upper limit for splicing, and the default setting of es is 1024

Solution:

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

Guess you like

Origin blog.csdn.net/qq_16733389/article/details/126504702