【发布时间】:2014-12-23 01:39:23
【问题描述】:
我刚刚查看了这个视频 - https://www.youtube.com/watch?v=7FLXjgB0PQI 并收到了一个关于 ElasticSearch 分析器的问题。 我已经阅读了官方文档和其他一些关于分析和分析器的文章,我有点困惑。
例如我有以下索引配置:
"settings" : {
"analysis" : {
"filter" : {
"autocomplete" : {
"type" : "edge_ngram",
"min_gram" : 1,
"max_gram" : 20
}
},
"analyzer" : {
"autocomplete" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : ["lowercase", "autocomplete"]
}
}
}
},
"mappings" : {
"user" : {
"properties" : {
"name" : {
"type" : "multi_field",
"fields" : {
"name" : {
"type" : "string",
"analyzer" : "standard"
},
"autocomplete" : {
"type" : "string",
"index_analyzer" : "autocomplete",
"search_analyzer" : "standard"
}
}
}
}
}
}
然后我单独执行以下搜索请求:
{
"match" : {
"name.autocomplete" : "john smi"
}
}
还有这个:
{
"match" : {
"name" : "john smi"
}
}
如果我理解正确,我必须看到相同的结果,因为在这两种情况下 ES 都应该使用标准分析器,但我得到了不同的结果。为什么?
更新
我在索引中有以下名称集合:“john smith”、“johnathan smith”。
【问题讨论】:
标签: search elasticsearch full-text-search