首页 文章

弹性搜索相同数据的一个索引或多个索引

提问于
浏览
2

我正在构建一个可以从ElasticSearch中获益的应用程序 . 在我目前的版本中,我使用的是单个索引:只有一种类型的“消息”:“消息” .

消息由以下格式组成(平均10kb):

messages
- id
- subject (string)
- date (date) (format: dateOptionalTime)
- account_id (integer)
- body (string)
- receivers (nested)
   properties:
      name (string)
      email (string) 
- files (nested)
   properties:
      content_type (string)
      filename (string) 
      size (long)

搜索当前基于account_id(为每个查询添加过滤器) . 在我的mySQL数据库中,每个帐户都有一个company_id(一个公司可以拥有多个帐户) . 将来我可能愿意允许用户在公司范围内搜索,而不是在单个帐户中搜索 . 我的数据集有点大(> 50米文档) .

我的问题是什么是最好的,只使用单一类型(消息)的单个索引(消息),或者在公司范围的索引上执行类似的操作,其中每个我将为每个公司创建新索引(如messages_%company_id %) .

我的数据集每月会增加1到5M个文档,几乎不需要删除文档 . 旧数据在这里可以像新插入的文档一样有 Value .

1 回答

  • 1

    我会坚持使用单一索引和单一类型 .

    ES“索引”类似于SQL“数据库” . ES“类型”类似于SQL“表” . 您会为不同的公司创建单独的数据库或单独的表吗?可能不是 .

    ES可以很好地扩展,并且可以很容易地搜索到你想要的任何类型的东西 . 只要给ES提供必要的硬件,50M文档应该没问题 .

    另外一个注意事项:如果有任何让ES成为您唯一数据存储的诱惑,我会反对它 . 我认为它还不存在 . 将MySQL数据库保留为“权威”存储引擎,并使用ES进行搜索 .

相关问题