Elasticsearch升级至8.5后使用通配符*出现unsupported_operation_exception
Elasticsearch 8.5中query_string查询"*"报错的解决方案
问题根源
Elasticsearch 8.x版本默认禁用了以通配符开头的query_string查询,这类查询会触发全分片扫描,严重拖慢集群性能,因此官方在新版本中新增了这个限制,而7.8版本无此约束,导致升级后原查询报错。
解决方案
方案1:用match_all替代(推荐)
如果你的需求是匹配所有文档,直接使用match_all查询即可,这是性能最优的方式:
{ "query": { "match_all": {} } }
方案2:启用通配符开头查询(不推荐,仅必要时使用)
若必须保留原query_string的写法,需要修改索引设置,开启允许通配符开头的查询:
- 新建索引时配置:
PUT /你的索引名 { "settings": { "index.query.allow_leading_wildcard": true } }
- 对已存在的索引更新配置:
PUT /你的索引名/_settings { "index.query.allow_leading_wildcard": true }
注意:启用该设置会大幅降低查询性能,还可能引发内存溢出风险,非必要场景优先选择方案1。
内容的提问来源于stack exchange,提问作者D-user
相关产品推荐
相关产品推荐

