我有以下模板将我的关键字转换为小写。当我搜索单Minnesota
和Dallas
等单词关键字时,搜索结果是准确的。
但是,任何带有空格的内容都会返回不准确的结果。如果我尝试搜索“North Texas”,我希望搜索返回包含“North Texas”的所有文档。
我认为关键字标记器会根据空白将两个单词分成一个单词。如何在使用normalizers
时保留空白?
{
"template": "myTemplate_*",
"settings": {
"index": {
"refresh_interval": "15s",
"translog": {
"durability": "async"
}
},
"analysis": {
"filter": {
"word_joiner": {
"type": "word_delimiter",
"preserve_original": true
}
},
"tokenizer": {
"queryparam_tokenizer": {
"type": "pattern",
"pattern": "&"
}
},
"normalizer": {
"normalizer_keyword": {
"type": "custom",
"filter": [
"lowercase",
"asciifolding",
"word_joiner"
]
}
}
}
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
}
},
"account": {
"dynamic": "false",
"properties": {
"city": {
"type": "keyword",
"null_value": " Null",
"normalizer": "normalizer_keyword"
},
"state": {
"type": "keyword",
"null_value": " Null",
"normalizer": "normalizer_keyword"
},
"region": {
"type": "keyword",
"null_value": " Null",
"normalizer": "normalizer_keyword"
},
"area": {
"type": "keyword",
"null_value": " Null",
"normalizer": "normalizer_keyword"
}
}
}
}
}
我甚至尝试添加一个word_delimeter
过滤器,preserve_original
设置为true
,这会让我错误。
"type":"illegal_argument_exception","reason":"Custom normalizer [normalizer_keyword] may not use filter [word_joiner]"},"status":400}
注意:我正在使用query_string
在ES中执行通配符匹配。