【问题标题】:Elasticsearch: Use a separate index for each language of the same data recordElasticsearch:对同一数据记录的每种语言使用单独的索引
【发布时间】:2014-07-12 03:42:41
【问题描述】:

我有一个数据记录,其中有一个名为标题的字段。一条记录可能同时具有不同的标题语言。此类记录还有其他字段,其值不会因语言而异,因此我不在以下两个示例中列出:

Record #1:
Title (English): Hello

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

目前标题有四种可能的语言:英语、西班牙语、法语和中文。随着系统的发展,将会支持更多的语言。

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

考虑到索引、更新、删除和搜索,这是一个好的/可接受的设计吗?有什么问题吗?

对于这个设计,我相信它至少有好处:

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

感谢您的任何意见!

最好的。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

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

    • title.engligsh
    • title.西班牙语

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

    这种方法将进一步允许您添加一个新的 title.whatever 字段到具有自己分析规则的文档。但请注意,上次我检查过,如果您使用全新的自定义分析器,您需要打开/关闭索引才能使其生效,这将导致几秒钟的停机时间。

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

    【讨论】:

    • ppearcy,非常感谢您的参与!!!在我的情况下,标题是唯一可搜索的字段。如果允许多语言搜索,重复文件的问题会很糟糕吗?我对您的单文档多值解决方案非常感兴趣。一个快速的问题:如果系统增长,我需要在文档中添加一种新语言。我是否能够做到这一点(引入一个新字段(例如 title.russian)并指定其分析规则)而不破坏当前索引并对所有文档进行另一个索引?再次感谢!
    • 没问题 :) 在添加新自定义字段的响应中添加了更多信息。
    • ppearcy,非常感谢!!!。你有贝宝账户吗?我想请你喝杯咖啡。再次,非常感谢!!!
    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 2014-06-10
    • 2020-10-09
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多