elasticsearch 不区分大小写不起作用,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 不区分大小写不起作用,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 不区分大小写不起作用

elasticsearch 不区分大小写不起作用,elasticsearch,nest,elasticsearch,Nest,我不明白为什么我的搜索区分大小写。我读到的所有东西都说ES在默认情况下是不敏感的。我有一些映射指定用于索引和搜索的标准分析器,但似乎有些东西仍然区分大小写-例如,通配符: "query": { "bool": { "must": [ { "wildcard": { "name": { "value": "Rae*" } } } ] } 这失败了,但“rae*”可以正常工作。我需要使用通配符进行“

我不明白为什么我的搜索区分大小写。我读到的所有东西都说ES在默认情况下是不敏感的。我有一些映射指定用于索引和搜索的标准分析器,但似乎有些东西仍然区分大小写-例如,通配符:

"query": {
"bool": {
  "must": [
    {
      "wildcard": {
        "name": {
          "value": "Rae*"
        }
      }
    }
  ]
}
这失败了,但“rae*”可以正常工作。我需要使用通配符进行“以开头”类型的搜索(我猜)

我正在使用.Net应用程序中的NEST,并在创建索引时指定分析器,因此:

  var settings = new IndexSettings();
  settings.NumberOfReplicas = _configuration.Replicas;
  settings.NumberOfShards = _configuration.Shards;
  settings.Add("index.refresh_interval", "10s");
  settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("keyword", new KeywordAnalyzer()));
  settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("simple", new SimpleAnalyzer()));
有人知道这里怎么了吗

感谢来自

“[通配符查询]匹配具有匹配通配符表达式(未分析)的字段的文档。”

由于未分析搜索项,因此在生成搜索查询之前,您基本上需要自己运行分析。在这种情况下,这只是意味着您的搜索词需要小写。或者,您可以使用:


在ES(2.3)的最新版本中,你可以使用完成建议器来解决这个问题。我也有同样的问题。即使尝试“查询字符串”,它在ES 5.1中也不起作用,但在2.3中起作用!!!!我不知道使用查询字符串是否是一个好主意,这不是一个低级的fn吗?
name: {
    type: string
    analyzer: simple
    store: yes
}
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "name:Rae*"
          }
        }
      ]
    }
  }
}