我的 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"
            ]
        }
    }
}

09-03 19:35