Elasticsearch 6.2.3版本 filtered 报错问题 no [query] registered for [filtered]
背景描述
近期在学习《Elasticsearch 权威指南》上的一些基本命令,在操作到 filtered 进行过滤查询的时候,报错 “no [query] registered for [filtered]”。
1)查询语句如下:
GET _search { "query":{ "filtered":{ "filter":{ "range":{ "age":{ "gt":30 } } }, "query":{ "match":{ "last_name":"smith" } } } } }
2)报错信息如下:
{ "error": { "root_cause": [ { "type": "parsing_exception", "reason": "no [query] registered for [filtered]", "line": 3, "col": 20 } ], "type": "parsing_exception", "reason": "no [query] registered for [filtered]", "line": 3, "col": 20 }, "status": 400 }
3)Kibana 的 Dev Tools 执行截图如下:
原因分析
Elasticsearch 在 5.0版本后,将 filtered 替换成了bool。
解决方案
1)正确的过滤查询语句如下:
GET _search { "query" : { "bool" : { "filter" : { "range" : { "age" : { "gt" : 30 } } }, "must" : { "match" : { "last_name" : "Smith" } } } } }
2)Kibana 的 Dev Tools上执行截图如下: