ElasticSearch优化指南

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 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 :

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7月前
|
算法 索引
阿里云 Elasticsearch 使用 RRF 混排优化语义查询结果对比
Elasticsearch 从8.8版本开始,新增 RRF,支持对多种不同方式召回的多个结果集进行综合再排序,返回最终的排序结果。之前 Elasticsearch 已经分别支持基于 BM25 的相关性排序和向量相似度的召回排序,通过 RRF 可以对这两者的结果进行综合排序,可以提升排序的准确性。
1538 0
|
2月前
|
算法 搜索推荐 关系型数据库
Elasticsearch算分优化方案之rescore_query
Elasticsearch算分优化方案之rescore_query
27 0
|
5月前
|
存储 自然语言处理 搜索推荐
深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
首先,我们介绍了Elasticsearch(ES)的倒排索引,这是一种用于快速检索的数据结构。其次,我们了解了ES集群的架构,包括主节点、数据节点和协调节点的功能和作用。然后,我们探讨了中文分词器的选择,其中包括IK、HanLP和Jieba等常用的分词工具。接着,我们解释了写入数据和查询数据的工作原理,包括请求的分配和预处理,数据的存储和查询结果的处理过程。最后,我们讨论了ES部署的优化方法,包括调整JVM内存、分片布局和数量、节点身份设计以及配置Ingest节点等方面的策略。
深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
|
10月前
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的集群部署优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
82 2
|
10月前
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的数据模型优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
55 0
|
10月前
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的磁盘读写优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
65 0
|
10月前
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的索引优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
53 0
|
10月前
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的检索/聚合优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
150 2
|
10月前
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的写入优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
65 0
|
10月前
|
消息中间件 SQL 移动开发
waynboot商城发布啦,整合了Redis、RabbitMQ、ElasticSearch等常用中间件, 根据生产环境开发经验而来不断完善、优化、改进中
waynboot商城发布啦,整合了Redis、RabbitMQ、ElasticSearch等常用中间件, 根据生产环境开发经验而来不断完善、优化、改进中
234 0

相关产品

  • 检索分析服务 Elasticsearch版