我的 flex 索引中的数据存在问题,其中某些字符串字段包含应相同的不同值。例如X-Box,X Box和XBox。
我意识到我可以在映射中添加一些转换,但是这种情况真的不合适,因为我们有来自许多来源的数据,并且在接收到它们之前值是未知的。
是否可以在搜索中定义类似转换的内容?例如,用户搜索“XBox”,但是由于我们已经定义了它(发现差异之后),Elastic知道还返回“X-Box和XBox”的文档吗?
希望这有意义吗?提前致谢。
最佳答案
Synonym filter是您的寻找。它可以将变体映射到通用名称。
您可以引用此blog创建分析器。
只需使用如下所示的格式-
{
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms" : [
"X-box, x box => xbox",
"universe, cosmos"
]
}
}
}