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