0

我的弹性索引中的数据存在问题,其中某些字符串字段包含应该相同的不同值。例如 X-Box、X Box 和 XBox。

我意识到我可以在我的映射中添加一些转换,但这并不适合这种情况,因为我们有来自许多来源的数据并且在我们收到它们之前这些值是未知的。

是否可以在搜索时定义类似转换的东西?例如,用户搜索“XBox”,但因为我们已经定义了它(在发现差异之后),Elastic 知道还返回“X-Box 和 XBox”的文档?

希望这有意义吗?提前致谢。

4

1 回答 1

1

同义词过滤器是您正在寻找的。它可以将变体映射到通用名称。你可以参考这个博客来创建分析器。只需使用如下所示的格式 -

{
    "filter" : {
        "synonym" : {
            "type" : "synonym",
            "synonyms" : [
                "X-box, x box => xbox",
                "universe, cosmos"
            ]
        }
    }
}
于 2015-08-14T11:33:53.327 回答