多语言支持:现在或以后添加所有语言映射?

时间:2015-10-08 14:03:05

标签: elasticsearch

我正在做一个Web应用程序,它使用Elasticsearch进行搜索,旨在支持多种语言。在映射中,我有几个字段看起来像这样:

"myfield": {"properties": {"en": {}, "zh_TW": {}, "ar": {}, ....}} 

然而,当它启动时,它只支持一种语言(英语)。稍后将添加对其他语言的支持,我们计划在未来添加对多种语言的支持。

我现在应该在映射中添加所有可能的语言代码(例如“en”,“zh_TW”,...)(显然这是一个很长的列表)?或者我应该只在语言被引入系统时添加语言代码?

对于第二种方法,额外的工作或运营影响是什么?我是否重新索引所有文件?我现在还需要了解其他什么?

感谢您的任何意见!

1 个答案:

答案 0 :(得分:0)

不得不重新索引文档,因为您无论如何都必须更新文档以使用新语言添加内容,不是吗?

因此,在将第一个文本放入该语言之前,先为每个新支持的语言添加映射。

我建议您为每种支持的语言复制字段,例如:

"myfield_en" : ...,
"myfield_zh_TW" : ...,
"myfield_ar" : ...

因为映射更容易。

当您开始支持德语时,请将德国分析器的映射用于新字段"myfield_de"。之后,每次使用德语翻译插入或更新文档时,都会分析德语字段。

如果您的文档没有德语翻译,则不需要重新索引。

结论:当你还没有要写任何文本时,为一个字段放置一个映射是没有意义的。