Elasticsearch:如何允许多语言搜索?

时间:2014-07-11 15:08:29

标签: elasticsearch

我是Elasticsearch的新手。我发布了一个名为

的问题

Elasticsearch:为同一数据记录的每种语言使用单独的索引

以下是链接:Elasticsearch: Use a separate index for each language of the same data record

发布的回答提到“允许多语言搜索”。我很困惑。我读过“Elasticsearch服务器(第2版)”这本书并没有看到这个主题。我只是做了谷歌搜索,无法在网上看到任何相关内容。

有没有人碰巧有关于“允许多语言搜索”的链接?这是配置吗?怎么样?

非常感谢任何输入!

问候。

1 个答案:

答案 0 :(得分:2)

您不需要为每种语言使用不同的索引。假设你有一个'产品'可以使用德语或法语或两者的标题字段的类型,您需要使用不同的分析器将法语标题与德语标题不同地编入索引。在映射中指定要使用的分析器:

{
    "product": {
        "properties": {
            "title": {
                "properties": {
                    "de": {
                      "type": "string",
                      "analyzer": "de_analyzer"
                    },
                    "fr": {
                      "type": "string",
                      "analyzer": "fr_analyzer"
                    }
                }
            }
        }
    }
}

索引您的文件

curl -XPOST 'http://localhost:9200/yourindex/product/1' -d
'{
    "title": {
        "fr": "Bonjour"
    }
}'

curl -XPOST 'http://localhost:9200/yourindex/product/2' -d
'{
    "title" : {
        "de": "Hallo"
    }

}'

如果您想搜索法语标题,可以在查询中引用它

http://localhost:9200/yourindex/_search?q=title.fr:bonjour

如果您想搜索德语标题:

http://localhost:9200/yourindex/_search?q=title.de=hallo

如果要搜索这两个字段,可以使用多字段搜索:

{
    "query":{
        "multi_match" : {
            "query": "bonjour hallo", 
            "fields": [ "title.fr", "title.de" ] 
        }
    }
} 

此博客将为您提供如何将分析器用于您想要索引的earch语言的好主意:

http://gibrown.wordpress.com/2013/05/01/three-principles-for-multilingal-indexing-in-elasticsearch/