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

What is the difference between single and double quotes in ElasticSearch's query string syntax?

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

我有一个索引,其字段 python_type 是一个未分析的字符串。

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

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

3) python_type: 'typeA' 什么也没找到。

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

谢谢,

内森

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

的文档