我是弹性搜索的新手。我正在使用弹性搜索大数据。
我的应用程序中没有连接查询,那么哪种结构最适合我的应用程序?
答案 0 :(得分:1)
我正在研究过去几天的弹力训练。我想分享我的经验/学习。
1)如果我们从关系数据库(如MYSQL,SQL)转移到ES
,我们需要维护所有数据之间的所有关系。在不同类型或索引中声明主键,在此基础上可以执行查询DSL。
2)如果您每天处理数百万个数据,则需要进行相应的设计。有些人更喜欢基于持续时间的结构,如Day, Week, Month
明智。它完全取决于您的使用案例。对于大型数据集(~1TB),您需要以indexes
和shards
的各种方式分发数据。
3)如果您的数据集很小,它也可以在默认设置下工作(5 shrads 1 replica
)。如果shards
中的数据集较小,它会为您提供更好的帮助。
4)JOIN
查询在elasticsearch中可能很昂贵。如果您经常执行该操作,可能会对您的HEAP
产生影响。因此,我建议您使用pre-cooked
数据准备数据集(在关系数据库中执行连接查询时获得的结果数据。)&具有唯一ID的文档。您可以参考this。请查看here,了解我们如何执行JOIN
5)在设计索引时,您可能需要注意一些要点:
6)您的错误架构可能会导致reindex
,这将导致停机时成本过高。结帐this article了解index designing
和最佳做法。