我无法让search_analyzer按预期工作 . 我希望它将指定的分析器应用于输入的搜索字符串,然后进行搜索 .
我将索引分析器设置为 ngram tokenizer ,其中包含l owercase filter 和 char replacement (- to _)
然后我想要搜索分析器 lowercase 和 replace (- to _) .
示例文档:{“filename”:“AAA-BBB”}
应匹配的示例搜索:{“match”:“AAA-b”}
相反,我必须搜索使用:{“match”:“aaa_b”}
elasticsearch版本:5.5
制图:
{
"settings": {
"analysis": {
"tokenizer": {
"DO_tokenizer_ngram": {
"type": "ngram",
"min_gram": 2,
"max_gram": 30
}
},
"analyzer": {
"DO_analyzer_ngram": {
"tokenizer": "DO_tokenizer_ngram",
"char_filter": [
"do_char_filter_dashes"
],
"filter": [
"lowercase"
]
},
"DO_analyzer_search": {
"type": "keyword",
"char_filter": [
"do_char_filter_dashes"
],
"filter": [
"lowercase"
]
}
},
"char_filter": {
"do_char_filter_dashes": {
"type": "pattern_replace",
"pattern": "(\\d+)-(?=\\d)",
"replacement": "$1_"
}
}
}
},
"mappings": {
"images": {
"properties": {
"filename": {
"type": "text",
"analyzer": "DO_analyzer_ngram",
"search_analyzer": "DO_analyzer_search"
}
}
}
}
}
1 回答
我是个白痴 . 搜索分析器需要:
代替