Elasticsearch对搜索进行转换?

时间:2015-08-14 09:27:10

标签: elasticsearch elastic-stack

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

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

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

希望有道理吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

Synonym filter正是您要找的。它可以将变体映射到通用名称。 您可以参考此blog来创建分析器。 只需使用如下所示的格式 -

{
    "filter" : {
        "synonym" : {
            "type" : "synonym",
            "synonyms" : [
                "X-box, x box => xbox",
                "universe, cosmos"
            ]
        }
    }
}