搜索引擎优化书籍(Elasticsearch查询数据的方法系列-2 )
优采云 发布时间: 2022-02-09 12:10搜索引擎优化书籍(Elasticsearch查询数据的方法系列-2
)
Elasticsearch 是一个非常灵活且功能丰富的搜索引擎,它提供了许多不同的方式来查询数据。在实际业务场景中,经常会出现远低于预期查询速度的慢查询。如果业务对查询延迟比较敏感,那么 Elasticsearch 查询延迟的抖动就是一个比较麻烦的问题。
Elasticsearch 作为一个分布式系统,可能有多种因素会影响查询性能。本文将分析导致查询慢的因素,并提供一些优化搜索速度的建议。
Elasticsearch 调优搜索速度“向日葵合集-1”
Elasticsearch 调优搜索速度“向日葵合集-2”
Elasticsearch 调优搜索速度“向日葵合集-3”
Elasticsearch 调优搜索速度“向日葵合集-4”
十、预热全局序数
全局序数是用于在关键字字段上运行术语聚合的数据结构。由于 Elasticsearch 不知道聚合使用哪些字段,哪些不使用,因此它们仅在需要时才加载到内存中。
但是,您可以在映射类型上定义 eager_global_ordinals==true,以便在刷新期间加载全局序数。
PUT 指数
{
“映射”:{
“特性”: {
“富”:{
“类型”:“关键字”,
“eager_global_ordinals”:真
}
}
}
}
十一、预热文件系统缓存
如果 Elasticsearch 主机重启,文件系统缓存会为空,因此操作系统需要一段时间才能将索引的热点区域加载到文件系统缓存中,搜索会变慢。
我们可以使用 index.store.preload 设置来明确告诉操作系统哪些文件应该通过指定文件扩展名加载到内存中。
index.store.preload 是一个静态设置,可以在 config/elasticsearch.yml 中设置:
index.store.preload: ["nvd", "dvd"]
或者在创建索引时设置:
放置 /my_index
{
“设置”:{
“index.store.preload”:[“nvd”,“dvd”]
}
}
此设置接受以逗号分隔的文件扩展名列表:列表中具有扩展名的所有文件在打开时都将被预加载。这有助于提高索引的搜索性能,尤其是在主机操作系统重新启动时,因为这会导致文件系统缓存被删除。
默认值为空数组,这意味着不会将任何内容加载到文件系统缓存中。
如果文件系统缓存不足以容纳所有数据,则将过多的索引或带有数据的文件预加载到文件系统缓存中会减慢搜索速度,应谨慎使用。