搜索引擎优化书籍(Elasticsearch的Elasticsearch查询数据的因素有哪些?将分析)
优采云 发布时间: 2022-01-22 04:08搜索引擎优化书籍(Elasticsearch的Elasticsearch查询数据的因素有哪些?将分析)
Elasticsearch 是一个非常灵活且功能丰富的搜索引擎,它提供了许多不同的方式来查询数据。在实际业务场景中,经常会出现远低于预期查询速度的慢查询。如果业务对查询延迟比较敏感,那么 Elasticsearch 查询延迟的抖动就是一个比较麻烦的问题。
Elasticsearch 作为一个分布式系统,可能有多种因素会影响查询性能。本文将分析导致查询慢的因素,并提供一些优化搜索速度的建议。
一、文件系统缓存越大越好
为了加快搜索速度,Elasticsearch 严重依赖文件系统缓存。通常,至少需要一半的可用内存作为文件系统缓存,以便 Elasticsearch 可以将索引的热点区域保留在物理内存中。
文件系统缓存可以理解为:操作系统的可用内存(总内存-分配的内存)。
如果给文件系统缓存更多的内存,并且内存可以尽可能的容纳所有的IDX Segment File索引数据文件,那么内存基本上是在搜索的时候使用的,性能会非常高。所以总的来说,性能要比磁盘高一个数量级,基本以毫秒为单位,从几毫秒到几百毫秒不等。
二、使用更快的硬件
搜索通常是 I/O 密集型的。除了上面分配更多的文件系统缓存之外,您还可以考虑购买更快的硬盘。
如果搜索是 CPU 密集型的,还可以考虑购买更快的 CPU。
三、文档建模
文档需要具有适当的类型,以便查询操作消耗更少的资源。
特别要避免连接操作,包括:
因此,通过宽表冗余存储(Data denormalization)的设计,不需要join操作,可以显着提高查询速度。
适用场景:一对多或多对多关联。
优点:速度快。因为每个文档都收录所有必需的信息,所以当需要在查询中匹配该信息时,不需要昂贵的关联操作。
缺点:索引更新或删除数据,应用程序必须处理宽表的冗余数据。
由于冗余存储,某些搜索和聚合操作可能无法按预期工作。