想知道在Elasticsearch中用于多语言索引和搜索的最佳实践或经验是什么。我通读了许多资源,并且尽可能地提炼出可供索引的可用选项包括:
因此,想知道选择这些选项中的一个或另一个(或我错过的其他一些)有什么副作用。我猜有更多的索引并不会真的减慢群集的速度(如果它不是大量的语言),所以除了可能更容易维护之外,不确定选择2或3会得到什么。
任何帮助都欢迎!
最佳答案
这个问题有点老了,但无论如何该信息可能会有所帮助。
索引/映射结构主要取决于您的用例。
您需要同时使用所有语言还是一次只使用一种语言?
例如多语言网站-用户只能以他们选择的当前语言查看和搜索。在这种情况下,我的经验是,每个语言索引将是一个很好的解决方案,尤其是在您需要能够轻松添加和删除语言的情况下。数据量在两个索引之间分开(性能优势)。轻松设置每种语言的分析仪,尤其是在其设置仅因语言名称而异的情况下。我个人目前正在为我的一个项目
选项2和3的一般说明:使用这些选项之一,您可以根据语言为文档评分,从而可以为每种语言字段定义评分。如果需要添加更多语言,则可以向映射添加新字段,但是无法删除或更改现有字段。因此,您将必须重新索引所有内容并将已删除语言的属性设置为空。您将需要为每种新语言添加新的分析器。但是需要先关闭索引,然后再进行更改。
“书名”: {
“type”:“multi_field”,
“字段”:{
“英语”: {
“type”:“字符串”
},
“德语”:{
“type”:“字符串”
},
“意大利语”:{
“type”:“字符串”
},
}
}
您可以在此处搜索特定语言(例如:“book_title.english”)或所有语言(使用“book_title”)。您应该小心而不是来使用“book_title”名称而不是“book_title。[language]”来更新字段。使用“book_title”将导致使用相同的数据更新所有子字段(这可能不是您想要的)
关于elasticsearch - 多语种Elasticsearch索引最佳实践/经验,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22153606/