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