【发布时间】:2018-09-01 18:07:48
【问题描述】:
我是弹性搜索的新手。我正在使用弹性搜索来搜索大数据。
我的应用程序中没有连接查询,那么哪种结构最适合我的应用程序?
【问题讨论】:
-
此线程可能会有所帮助:stackoverflow.com/questions/14465668/… ... 总之:您唯一的选择是第二个 ;-)
标签: elasticsearch
我是弹性搜索的新手。我正在使用弹性搜索来搜索大数据。
我的应用程序中没有连接查询,那么哪种结构最适合我的应用程序?
【问题讨论】:
标签: elasticsearch
过去几天我一直在研究 elasticserach。我想分享我的经验/学习。
1) 如果我们从 MYSQL、SQL 等关系型数据库迁移到ES,我们需要维护所有数据之间的所有关系。声明不同类型或索引的主键,在此基础上可以进行Query DSL。
2) 如果您每天处理数百万个数据,您需要进行相应的设计。有些人更喜欢基于持续时间的结构,例如 Day, Week, Month wise。它完全取决于您的用例。对于大型数据集 (~ 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 和最佳实践。
【讨论】: