【发布时间】:2013-06-20 10:47:21
【问题描述】:
我不明白为什么我的搜索是区分大小写的。我读过的所有内容都说 ES 默认情况下是不敏感的。我有指定用于索引和搜索的标准分析器的映射,但似乎有些东西仍然区分大小写 - 即通配符:
"query": {
"bool": {
"must": [
{
"wildcard": {
"name": {
"value": "Rae*"
}
}
}
]
}
这会失败,但“rae*”可以按需要工作。我需要使用通配符进行“starts-with”类型搜索(我想)。
我正在使用 .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()));
在这种情况下,它使用的是简单分析器,但标准分析器具有相同的结果。
映射如下所示:
name: {
type: string
analyzer: simple
store: yes
}
有人知道这里有什么问题吗?
谢谢
【问题讨论】:
-
随着 ES (2.3) 的更新版本,您可以使用 Completion Suggester。
-
我有同样的问题。即使尝试了“query_string”,它在 ES 5.1 中也不起作用,但在 2.3 中起作用。 !!!!
标签: elasticsearch nest