有时我对Elasticsearch完成的行为感到有些惊讶。我已经设置了一个具有建议字段的映射。在建议字段的输入中,我提出了3个名称,ISIN和发行者的3个元素。
这是我使用的映射:
"suggest": {
"type" : "completion",
"analyzer" : "simple"
}
当我想对此查询查询索引时:
{
"suggest": {
"my_suggestion": {
"prefix": "FR0011597335",
"completion": {
"field": "suggest"
}
}
}
}
我得到了结果的列表,但我的确切前缀不一定,并且在大多数情况下,确切的匹配不在顶部。
所以我想知道是否有一种方法可以提高建议中的精确匹配,并在可能的情况下进行此类确切的术语匹配。
我认为我的问题是通过使用自定义分析仪解决的:简单的分析仪对于我所拥有的条目并不方便。
"settings": {
"analysis": {
"char_filter": {
"punctuation": {
"type": "mapping",
"mappings": [".=>"]
}
},
"filter": {},
"analyzer": {
"analyzer_text": {
"tokenizer": "standard",
"char_filter": ["punctuation"],
"filter": ["lowercase", "asciifolding"]
}
}
}
},
和
"suggest": {
"type" : "completion",
"analyzer" : "analyzer_text"
}