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文章来源:https://www.toymoban.com/news/detail-520283.html
解决方法:文章来源地址https://www.toymoban.com/news/detail-520283.html
方案一:当超过1024时可以将一个bool查询拆成两个子bool查询,使用must关键字,使得两个子bool查询是与的关系
方案二:编辑elasticsearch.yml,添加如下配置
index.query.bool.max_clause_count: 10240
注意:必须在最前面添加一个空格,即和其他配置首字母对齐,不然es启动报错。
方案三:由于索引分词使用了同义词,可以将查询分词和索引分词分开,单独设置查询分词
到了这里,关于ES执行报错:too_many_clause的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!