Elasticsearch - 将文档拆分为单独索引的含义
Elasticsearch - implications of splitting documents into separate indexes
假设我有 100,000 个来自不同客户组的文档,它们的格式相同,信息类型相同。
各个客户组的文档会在一天中的不同时间刷新。我被建议为每个客户组提供他们自己的索引,这样当我的个人客户索引在本地刷新时,我可以为该客户创建一个新索引并删除该客户的旧索引。
将数据拆分为多个索引并使用别名进行查询有什么影响?具体来说:
- 它会增加我的服务器硬盘要求吗?
- 它会增加我的服务器 RAM 要求吗?
- elasticsearch通过查询别名查询所有索引会不会比较慢?
感谢您的帮助或建议。
每个索引在所有级别上都有一些开销,但通常很小。对于 100,000 个文档,除非这些文档非常大,否则我会质疑拆分的必要性。通常每个添加的索引将:
需要一些 RAM 用于插入缓冲区和其他与每个索引相关的任务
相对于较大的单个索引,它在磁盘上有自己的合并开销
如果查询跨越多个索引,则由于结果合并会在查询时增加一些延迟
有很多 因素可以决定其中任何一项是否重要。如果你有很多 RAM 和几个 CPU 和 SSD,那么你可能没问题。
我建议您构建一个使用尽可能少的碎片的解决方案。这可能意味着一个(或至少只有几个)索引。
假设我有 100,000 个来自不同客户组的文档,它们的格式相同,信息类型相同。
各个客户组的文档会在一天中的不同时间刷新。我被建议为每个客户组提供他们自己的索引,这样当我的个人客户索引在本地刷新时,我可以为该客户创建一个新索引并删除该客户的旧索引。
将数据拆分为多个索引并使用别名进行查询有什么影响?具体来说:
- 它会增加我的服务器硬盘要求吗?
- 它会增加我的服务器 RAM 要求吗?
- elasticsearch通过查询别名查询所有索引会不会比较慢?
感谢您的帮助或建议。
每个索引在所有级别上都有一些开销,但通常很小。对于 100,000 个文档,除非这些文档非常大,否则我会质疑拆分的必要性。通常每个添加的索引将:
需要一些 RAM 用于插入缓冲区和其他与每个索引相关的任务
相对于较大的单个索引,它在磁盘上有自己的合并开销
如果查询跨越多个索引,则由于结果合并会在查询时增加一些延迟
有很多 因素可以决定其中任何一项是否重要。如果你有很多 RAM 和几个 CPU 和 SSD,那么你可能没问题。
我建议您构建一个使用尽可能少的碎片的解决方案。这可能意味着一个(或至少只有几个)索引。