我正在做一个Web应用程序,它使用Elasticsearch进行搜索,旨在支持多种语言。在映射中,我有几个字段看起来像这样:
"myfield": {"properties": {"en": {}, "zh_TW": {}, "ar": {}, ....}}
然而,当它启动时,它只支持一种语言(英语)。稍后将添加对其他语言的支持,我们计划在未来添加对多种语言的支持。
我现在应该在映射中添加所有可能的语言代码(例如“en”,“zh_TW”,...)(显然这是一个很长的列表)?或者我应该只在语言被引入系统时添加语言代码?
对于第二种方法,额外的工作或运营影响是什么?我是否重新索引所有文件?我现在还需要了解其他什么?
感谢您的任何意见!
答案 0 :(得分:0)
不得不重新索引文档,因为您无论如何都必须更新文档以使用新语言添加内容,不是吗?
因此,在将第一个文本放入该语言之前,先为每个新支持的语言添加映射。
我建议您为每种支持的语言复制字段,例如:
"myfield_en" : ...,
"myfield_zh_TW" : ...,
"myfield_ar" : ...
因为映射更容易。
当您开始支持德语时,请将德国分析器的映射用于新字段"myfield_de"
。之后,每次使用德语翻译插入或更新文档时,都会分析德语字段。
如果您的文档没有德语翻译,则不需要重新索引。
结论:当你还没有要写任何文本时,为一个字段放置一个映射是没有意义的。