在ElasticSearch的查询字符串语法中,单引号和双引号有什么区别?为了防止术语错误,在引用查询字符串语法时,我指的是查找选项卡上kibana的搜索字段所使用的语法。
我有一个python_type
字段的索引,它是一个未分析的字符串。
1) python_type: typeA
找到预期的文档
2) python_type: "typeA"
还找到了预期的文档
( 3) python_type: 'typeA'
一无所获。
为什么第三个查询字符串不返回结果?查询字符串如何解释单引号?有趣的是,在分析字段时,所有三个查询字符串都返回预期的结果。
谢谢,
内森
发布于 2016-06-03 04:30:36
Kibana输入字段不需要JSON数据,但是您在输入字段中键入的内容必须遵循 query syntax。
正如您在该文档中所看到的,在任何地方都没有单引号,即它不是查询语法的保留字符。
当查询python_type:'typeA'
时,Kibana发送给ES的query_string
查询如下所示:
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "python_type:'typeA'",
"analyze_wildcard": true
}
}
}
}
}
这并不是错误的,但是ES将检查包含python_field
的带有单引号的'typeA'
文档。
然而,当查询python_type:"typeA"
或python_type:typeA
时,ES将检查是否有一个具有确切术语typeA
的python_field
的文档。
https://stackoverflow.com/questions/37603310
复制相似问题