缓存
OpenSearch 依赖于不同的堆内缓存类型来加速数据检索,显著改善搜索延迟。然而,缓存大小受限于节点上可用的内存量。当处理可能被缓存的更大数据集时,缓存大小限制可能导致许多数据被从缓存中移除或未被缓存,从而导致不完整的查询。这会影响性能,因为 OpenSearch 需要再次处理查询,导致高资源消耗。
了解数据如何使用缓存有助于提高集群性能并防止内存使用过多,从而降低查询数据的成本。
支持的堆内缓存类型
OpenSearch 支持以下堆内缓存类型:
- 索引请求缓存: 缓存每个分片上的本地结果。这使得频繁使用且可能占用大量资源的搜索请求能够几乎即时返回结果。
- 查询缓存: 在分片级别缓存来自类似查询的通用数据。查询缓存比请求缓存更细粒度,并且可以缓存数据以在不同的查询中重用。
- 字段数据缓存: 缓存字段数据和全局序数,两者都用于支持特定字段类型的聚合。
其他缓存存储
2.14 版本引入
除了现有的自定义 OpenSearch 堆内缓存存储之外,缓存插件还提供以下缓存存储:
- 磁盘缓存: 将查询的预计算结果存储在磁盘上。使用磁盘缓存可以缓存更大的数据集,前提是磁盘的延迟在可接受的范围内。
- 分层缓存: 一种多级缓存,其中每个层级都有其自身的特性和性能水平。例如,分层缓存可以同时包含堆内层和磁盘层。通过结合不同的层级,可以在缓存性能和大小之间取得平衡。要了解更多信息,请参阅分层缓存。
在 OpenSearch 2.14 中,请求缓存已与缓存插件集成。您可以将分层缓存或磁盘缓存用作请求级缓存。