ElasticSearch的查询字符串语法中单引号和双引号有什么区别?

时间:2016-06-02 22:44:09

标签: elasticsearch kibana kibana-4

ElasticSearch的查询字符串语法中单引号和双引号有什么区别?为了防止我的术语出错,在引用查询字符串语法时,我指的是发现选项卡上kibana搜索字段使用的语法。

我的字段python_type的索引是未分析的字符串。

1)python_type: typeA找到预期的文件

2)python_type: "typeA"也找到了预期的文件

3)python_type: 'typeA'一无所获。

为什么第三个查询字符串没有返回结果?查询字符串如何解释单引号?有趣的是,在分析字段时,所有三个查询字符串都会返回预期的结果。

谢谢,

1 个答案:

答案 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的文档