【发布时间】:2016-08-11 14:17:45
【问题描述】:
我使用 elasticsearch ngram
"analysis": {
"filter": {
"desc_ngram": {
"type": "ngram",
"min_gram": 3,
"max_gram": 8
}
},
"analyzer": {
"index_ngram": {
"type": "custom",
"tokenizer": "keyword",
"filter": [ "desc_ngram", "lowercase" ]
},
"search_ngram": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
}
我这里有 2 个对象
{
"name": "Shana Calandra",
"username": "shacalandra",
},
{
"name": "Shana Launer",
"username": "shalauner",
},
并使用此查询
{
query: {
match: {
_all: "Shana"
}
}
}
当我使用此查询进行搜索时,它会返回两个文档,但我无法在这里按部分单词搜索,例如,我不能在查询中使用“Shan”而不是“Shana”,因为它不返回任何内容。
也许我的映射是错误的,我无法理解问题是在映射上还是在查询上
【问题讨论】:
-
问题可能是您正在搜索
_all字段,除非另有说明,否则该字段使用标准分析器。尝试专门匹配name。有用吗?
标签: elasticsearch mapping