如何在Elasticsearch中结合前缀查询和同义词过滤器?



我目前使用的是Elasticsearch 7.13,遇到了一个问题。

假设我们有以下数据:

horse
mouse
chicken
rooster
duck
cow

让我们假设同义词文件有以下条目(即roosterchicken彼此是同义词):

rooster,chicken

MATCH查询将同时返回chickenrooster

"query": {
"match": {
"animal": "chicken"
}
}

但是下面的前缀查询将只返回chicken,而不返回rooster

"query": {
"prefix": {
"animal": "chic"
}
}

我想要的是用户只输入chic, Elasticsearch将返回chickenrooster

是否有办法组合前缀查找同义词

?这是我的设置:

"filter": {
"synonyms_animal": {
"type": "synonym_graph",
"synonyms_path": "synonyms_animal.txt",
"updateable": "true"
}
}
"analyzer": {
"custom_synonyms": {
"filter": [
"lowercase",
"synonyms_animal"
],
"tokenizer": "whitespace"
}
}

这是我的映射属性部分:

"animal": {
"type": "text",
"analyzer": "some_custom_index_analyzer",
"search_analyzer": "custom_synonyms"
}

发现不能使用搜索时间同义词

您必须使用索引时间同义词才能工作。

最新更新