我有以下映射:
analyzer:
edge_ngram_analyzer:
type: custom
tokenizer: edge_ngram
tokenizer:
edge_ngram:
type : edgeNGram
min_gram : 2
max_gram : 20
productCode:
type: string
inxed_analyzer: edge_ngram_analyzer
search_analyzer: keyword
搜索字符串是
AH.20
索引分析器的 token :AH
,AH.
,AH.2
,AH.20
搜索分析器的 token :AH.20
查询:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "product.productCode",
"query": "AH.20"
}
}
]
}
}
}
但是它什么也没返回。映射有什么问题?
PS,当我不使用search_analyzer时,elasticsearch返回正确的结果(我确定ES会使用
AH
token 生成器将搜索字符串分解为 token 20
,standard
) 最佳答案
您的映射定义中存在问题,除非是拼写错误:
inxed_analyzer: edge_ngram_analyzer
它应该是:
index_analyzer: edge_ngram_analyzer