我有一个使用 MVC 模式开发的应用程序,我现在想索引它的多个模型,这意味着每个模型都有不同的数据结构。
如果有人可以为此目的推荐一些好的样本数据,我会自己测试第二个问题。
两种方法都有不同的含义。
假设您使用 Elasticsearch 的默认设置,每个模型有 1 个索引将显着增加分片数量,因为 1 个索引将使用 5 个分片,5 个数据模型将使用 25 个分片;虽然 1 个索引中有 5 个对象类型,但仍将使用 5 个分片。
将每个数据模型作为索引的含义:
- 在索引内搜索高效且快速,因为每个分片中的数据量应该较小,因为它分布到不同的索引。
- 从 2 个或更多索引搜索数据模型的组合将会产生开销,因为查询必须跨索引发送到更多分片,进行编译并发送回用户。
- 如果您的数据集很小,则不建议这样做,因为创建每个额外的分片都会产生更多的存储空间,并且性能增益微乎其微。
- 如果您的数据集很大并且查询需要很长时间来处理,则建议使用,因为专用分片正在存储您的特定数据,并且 Elasticsearch 更容易处理。
将每个数据模型作为索引中的对象类型的含义:
- 更多数据将存储在索引的 5 个分片中,这意味着当您跨不同数据模型进行查询时,开销问题会减少,但分片大小会明显增大。
- 分片中的数据越多,Elasticsearch 搜索的时间就越长,因为有更多的文档需要过滤。
- 如果您知道正在处理 1 TB 的数据并且您没有将数据分布在 Elasticsearch 映射中的不同索引或多个分片上,则不建议这样做。
- 建议用于小型数据集,因为每个分片都会占用硬件中的空间,因此您不会为了边际性能增益而浪费存储空间。
如果您问什么是大数据与小数据?通常,它取决于硬件的处理器速度和 RAM、Elasticsearch 映射中每个变量中存储的数据量以及您的查询要求;在查询中使用多个方面会显着减慢您的响应时间。对此没有直接的答案,您必须根据您的需求进行基准测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)