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

时间:2014-07-10 20:39:00

标签: elasticsearch

我有一个数据记录,其中有一个名为title的字段。记录可能同时具有不同的标题语言。这样的记录有其他字段,其值不随语言而变化,所以我不在以下两个例子中列出它们:

Record #1:
Title (English): Hello

Record #2:
Title (English): World
Title (Spanish): mundo

目前标题有四种语言:英语,西班牙语,法语和中文。系统增长时将支持更多语言。

我是Elasticsearch的新手。我想为每种语言都有一个单独的索引。因此,对于记录#2,我将创建两个Elasticsearch文档(每种语言一个)并将文档发送到与其语言对应的索引。

在记录索引,更新,删除和搜索时,这是一个好的/可接受的设计吗?有什么问题吗?

对于这种设计,我认为它至少有好处:

  • 我可以轻松决定每种语言需要多少分片 独立地
  • 我可以决定索引(语言)
  • 的分片数量和位置
  • 当系统增长时,我可以轻松地为新语言添加索引 销毁或重新索引现有数据。
  • 系统可以最大限度地利用分布式计算 功率

感谢您的任何意见!

最佳。

1 个答案:

答案 0 :(得分:3)

您的解决方案可能会正常运行,但如果您开始允许多语言搜索,则可能会遇到重复文档的问题。

每个字段有多个可能的值可能更为理想,例如:

  • title.engligsh
  • title.spanish

您可以为每种语言提供完全不同的分析规则,而无需复制文档。

此方法将进一步允许您使用自己的分析规则向文档添加新标题。但是请注意,最后我检查过,如果你使用一个全新的自定义分析仪,你需要打开/关闭索引才能使它生效,这将导致几秒钟的停机时间。

我试着用一个端到端的例子来寻找一些时间来扩展这个答案。