多语言弹性搜索

时间:2014-07-13 20:44:12

标签: elasticsearch multilingual

我将在ElasticSearch中索引帖子。目前有两种语言:英语和中文。所以每个帖子都有一个(英语)或两个翻译加上一些两种语言共有的数据。我的问题是我应该如何索引帖子?

  1. 创建两个索引:posts-enposts-cn并分别存储帖子?
  2. 创建单个索引posts并保持数据格式如下:

    {
      commonParam1: 1,
      commonParam2: "somevalue",
      ...
      titleEn: "English title",
      titleCn: "Chinese title",
      contentEn: "Content EN",
      contentCn: "Content CN",
      ...
    }
    

1 个答案:

答案 0 :(得分:1)

除非您有令人信服的理由将单个文档拆分为两个索引,否则我强烈建议将其全部保存在一个索引中。

使用一个索引,您可以轻松地为每个特定于语言的字段使用不同的分析器。在将来为新语言添加其他映射非常简单。它允许您在单个调用中索引每个文档,而不是两个,每种语言一个,如果您单独索引。您可以减少重复数据(例如公共数据)。

我还要好好看一下这篇文章:http://gibrown.wordpress.com/2013/05/01/three-principles-for-multilingal-indexing-in-elasticsearch/

在Elasticsearch中分析和索引多种语言是一个很好的讨论。