在ElasticSearch中,我必须使用单一类型创建单个索引和多个类型或多个索引?

时间:2018-03-23 06:02:03

标签: elasticsearch

我是弹性搜索的新手。我正在使用弹性搜索大数据。

我的应用程序中没有连接查询,那么哪种结构最适合我的应用程序?

1 个答案:

答案 0 :(得分:1)

我正在研究过去几天的弹力训练。我想分享我的经验/学习。

1)如果我们从关系数据库(如MYSQL,SQL)转移到ES,我们需要维护所有数据之间的所有关系。在不同类型或索引中声明主键,在此基础上可以执行查询DSL。

2)如果您每天处理数百万个数据,则需要进行相应的设计。有些人更喜欢基于持续时间的结构,如Day, Week, Month明智。它完全取决于您的使用案例。对于大型数据集(~1TB),您需要以indexesshards的各种方式分发数据。

3)如果您的数据集很小,它也可以在默认设置下工作(5 shrads 1 replica)。如果shards中的数据集较小,它会为您提供更好的帮助。

4)JOIN查询在elasticsearch中可能很昂贵。如果您经常执行该操作,可能会对您的HEAP产生影响。因此,我建议您使用pre-cooked数据准备数据集(在关系数据库中执行连接查询时获得的结果数据。)&具有唯一ID的文档。您可以参考this。请查看here,了解我们如何执行JOIN

5)在设计索引时,您可能需要注意一些要点:

  1. 不要将Elasticsearch视为数据库
  2. 在您进入
  3. 之前了解您的用例
  4. 明智地整理数据
  5. 巧妙利用复制品
  6. 根据实验确定容量计划
  7. 6)您的错误架构可能会导致reindex,这将导致停机时成本过高。结帐this article了解index designing和最佳做法。