ElasticSearch:为什么query_string不区分大小写而通配符区分大小写?

tt_*_*ntz 2 wildcard request elasticsearch

为什么当您对字段执行 query_string 查询时,它不区分大小写,而通配符查询则区分大小写?我本以为两人的行为会很相似。

此 query_string 查询返回结果

{
  "query": {
    "bool" : {
      "must" : [ {
        "query_string" : {
          "query" : "name:*HILTON*"
        }
      } ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这个通配符查询没有

{
  "query": {
    "bool" : {
      "must" : [{
        "wildcard" : {
          "name" : "*HILTON*"
        }
      } ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*cha 5

这是因为通配符查询适用于not analyzed字段。

根据文档:

前缀、通配符和正则表达式查询对术语进行操作。如果您使用它们来查询已分析的字段,它们将检查该字段中的每个术语,而不是整个字段。

通配符查询匹配具有与通配符表达式匹配的字段的文档(未分析)