我是Elasticsearch的新手。我发布了一个名为
的问题Elasticsearch:为同一数据记录的每种语言使用单独的索引
以下是链接:Elasticsearch: Use a separate index for each language of the same data record
发布的回答提到“允许多语言搜索”。我很困惑。我读过“Elasticsearch服务器(第2版)”这本书并没有看到这个主题。我只是做了谷歌搜索,无法在网上看到任何相关内容。
有没有人碰巧有关于“允许多语言搜索”的链接?这是配置吗?怎么样?
非常感谢任何输入!
问候。
答案 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/