ES 6.3.5报错no [query] registered for [filtered]请求失败求助
解决Elasticsearch 6.3.5查询失败的问题
嘿,你的问题出在ES版本升级后的语法变化上——ES 5.x之后就彻底移除了filtered查询语法,而且fields参数的用法也有调整,这就是旧请求在6.3.5里失效的原因。我帮你调整一下请求体,同时给你解释改动点:
核心改动点
- 移除
filtered查询:ES 5.x开始就弃用了filtered,改用bool查询直接整合过滤条件和查询条件,你的场景里可以把原来的逻辑直接放到bool的filter里(用filter不影响文档评分,更适合这类精确匹配场景) - 替换
fields为_source:ES 6.x中fields主要用于获取字段的元数据(比如字段长度等),如果要指定返回的文档内容字段,应该用_source参数,这是当前版本的标准用法。
修改后的请求体
{ "size": 100, "query": { "bool": { "filter": [ { "match_phrase": { "component": "machine1.usermanager" } } ] } }, "_source": [ "@timestamp", "component", "logger", "level", "message", "stack_trace" ], "sort": { "@timestamp": { "order": "desc" } } }
额外说明
我还把你原来嵌套的match短语查询简化成了match_phrase,这是ES专门用于短语匹配的语法,比嵌套match+type: phrase更简洁直接,功能完全一致。
内容的提问来源于stack exchange,提问作者Fastboyz
相关产品推荐
相关产品推荐

