ElasticSearch的查询字符串语法中单引号和双引号有什么区别?为了防止我的术语出错,在引用查询字符串语法时,我指的是发现选项卡上kibana搜索字段使用的语法。
我的字段python_type
的索引是未分析的字符串。
1)python_type: typeA
找到预期的文件
2)python_type: "typeA"
也找到了预期的文件
3)python_type: 'typeA'
一无所获。
为什么第三个查询字符串没有返回结果?查询字符串如何解释单引号?有趣的是,在分析字段时,所有三个查询字符串都会返回预期的结果。
谢谢,
森
答案 0 :(得分:1)
Kibana输入字段并不期望JSON数据,但您在输入字段中输入的内容必须遵循query_string
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时,会检查具有python_field
且具有确切术语typeA
的文档