ElasticSearch优化指南

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: ElasticSearch优化指南

刷新写入磁盘时间间隔 refresh_interval

调优建议:

根据业务需求,如果对实时性要求不高(可以接受数据查询延迟时间的),可以将该值设置大一些,如30s,默认为1s;

-1 为不刷新,如果设置-1 ,也并非一直不会写入到磁盘,index_buffer也就是内存缓存默认是堆的10% 满了也会刷到segment

数据索引底层原理

这里先介绍一下数据索引底层原理

  1. 先写入buffer,在buffer里的时候数据是搜索不到的;同时将数据写入translog日志文件。
  2. 如果buffer到达阈值,或者到一定时间(即:refresh_interval),ES会将buffer中的数据refresh到一个新的segment file中,但是此时数据不是直接进入segment file的磁盘文件的,而是先进入os cache的。这个过程就是refresh。
  3. 每隔1秒钟,es就会将buffer中的数据写入到一个新的segment file,因此每秒钟产生一个新的磁盘文件(segment file),这个segment file中就存储最近1秒内buffer中写入的数据。如果buffer里面此时没有数据,就不会执行refresh操作;如果buffer里面有数据,默认1秒钟执行一次refresh操作,刷入一个新的segment file中。
  4. 操作系统里面存在操作系统缓存(os cache),数据写入磁盘文件之前会先进入os cache,先进入操作系统级别的一个内存缓存中。只要buffer中的数据被refresh到os cache中,数据就可以被检索到了。
  5. 可以通过es的restful api或者java api,手动执行一次refresh操作,就是手动将buffer中的数据刷入os cache中,让数据立马就可以被搜索到。只要数据被输入os cache中,buffer就会被清空了,因为不需要保留buffer了,数据在translog里面已经持久化到磁盘去一份了。

指定索引设置刷新时间

动态设置

PUT /{
   index}/_settings
{
    
  "refresh_interval": "2s" 
}

强制刷新

如果要针对某次添加数据或数据变更进行强行刷新操作时,可以通过下列方式:

POST {index}/_doc?refresh
{
  "title" : "深入理解 elasticsearch"
}

如上操作可以使数据马上写入,即可立即搜索可见。

重置 refresh_interval

重置为默认的refresh_interval 值 1s

PUT {
   index}/_settings
{
   
  "index" : {
   
    "refresh_interval" : null
  }
}

当我们大批量的往Elasticsearch索引录入数据时,通常会把refresh_interval 设置为 -1,这样会加快数据导入的速度,在数据导入完成后,再将该参数设置为正数。比如:1s。

当 refresh_interval 为 -1 时,意味着不刷新索引。

refresh_interval 的默认值是 1s。

数据初始索引时禁用刷新和副本机制若有一大批数据需要索引的时候(前提条件),由于刷新和副本机制对数据索引性能影响较大,可以将index.refresh_interval设置为-1,将index.number_of_replicas设置为0以禁用该两机制。直到本次数据全部索引完成后再将这两个参数调整至合理的值,然而应该明白性能与数据安全总是不能同时得到满足,完全看业务数据的重要性。

TODO Translog : 预写日志

https://blog.csdn.net/qq_21383435/article/details/109212665

TODO Merge :

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
算法 索引
阿里云 Elasticsearch 使用 RRF 混排优化语义查询结果对比
Elasticsearch 从8.8版本开始,新增 RRF,支持对多种不同方式召回的多个结果集进行综合再排序,返回最终的排序结果。之前 Elasticsearch 已经分别支持基于 BM25 的相关性排序和向量相似度的召回排序,通过 RRF 可以对这两者的结果进行综合排序,可以提升排序的准确性。
2868 0
|
11月前
|
存储 缓存 固态存储
优化Elasticsearch 硬件配置
优化Elasticsearch 硬件配置
461 5
|
11月前
|
缓存 监控 安全
Elasticsearch扩展和优化
【11月更文挑战第4天】
204 6
|
12月前
|
存储 自然语言处理 Java
Elasticsearch写入优化
【10月更文挑战第3天】Elasticsearch:从写入原理谈写入优化
306 2
|
11月前
|
存储 缓存 监控
优化Elasticsearch 索引设计
优化Elasticsearch 索引设计
192 5
|
11月前
|
缓存 监控 安全
优化Elasticsearch 集群配置
优化Elasticsearch 集群配置
280 4
|
11月前
|
监控 负载均衡 安全
Elasticsearch集群配置优化
Elasticsearch集群配置优化
220 1
|
11月前
|
存储 缓存 监控
优化 Elasticsearch
优化 Elasticsearch
160 1
|
数据库 索引
Elasticsearch索引别名:管理与优化数据访问
Elasticsearch索引别名:管理与优化数据访问
252 2
|
运维 索引
Elasticsearch 写入优化探索:是什么影响了refresh 耗时?
Elasticsearch 写入优化探索:是什么影响了refresh 耗时?

相关产品

  • 检索分析服务 Elasticsearch版