Kibana Discover中使用Elasticsearch Query DSL查询报错的技术咨询
解决Kibana Discover中Query DSL解析错误的问题
我之前也碰到过一模一样的问题!其实核心原因是Discover的搜索框和Dev Tools的请求逻辑完全不同:
为什么会报错?
Discover的搜索框默认会把输入内容当成Lucene查询字符串来解析。你直接粘贴完整的Elasticsearch Query DSL JSON,它会把整个JSON结构当成Lucene语法处理,自然就会抛出解析异常。而Dev Tools是直接将你的JSON作为请求体发送给Elasticsearch,跳过了Kibana的Lucene解析环节,所以能正常执行。
怎么解决?
当你在Discover中选择Lucene作为查询语言时,要嵌入原生的Query DSL,必须用{!dsl}前缀明确告诉Kibana:这部分是Elasticsearch的原生DSL,不要用Lucene语法解析。
把你的查询语句改成下面这样即可:
{!dsl} {"query":{"match_phrase":{"summary":"stochastic noise"}}}
额外小技巧
如果你频繁使用DSL查询,可以看看Discover搜索框旁边的查询模式切换按钮——部分Kibana版本里提供了直接选择"Query DSL"的选项,切换后就能直接输入完整的DSL JSON,不用加前缀。不过{!dsl}前缀是最通用的方法,适配绝大多数Kibana版本。
内容的提问来源于stack exchange,提问作者PurpleVermont
相关产品推荐
相关产品推荐

