当前位置: 首页 > news >正文

Elasticsearch7.8.0版本进阶——近实时搜索

目录

    • 一、近实时搜索的概述
      • 1.1、按段(per-segment)搜索
      • 1.2、更轻量的方式搜索
    • 二、为什么Elasticsearch是 近 实时搜索
    • 三、如何解决索引了一个文档然后却没有搜到
    • 四、哪种情况不需要每秒刷新
      • 4.1、使用 Elasticsearch 索引大量的日志文件
      • 4.2、使用 Elasticsearch建立一个大的新索引时

一、近实时搜索的概述

1.1、按段(per-segment)搜索

  • 随着按段(per-segment)搜索的发展,一个新的文档从索引到可被搜索在几分钟之内即可被检索,但这样还是不够快。因为磁盘成为了瓶颈。
  • 提交(Commiting)一个新的段到磁盘需要一个 fsync 来确保段被物理性地写入磁盘,在断电的时候就不会丢失数据。 但是 fsync 操作代价很大; 如果每次索引一个文档都去执行一次的话会造成很大的性能问题。

1.2、更轻量的方式搜索

  • 在 Elasticsearch 和磁盘之间是文件系统缓存,新段会被先写入到文件系统缓存,稍后再被刷新到磁盘。
    在这里插入图片描述

  • 不过只要文件已经在缓存中,就可以像其它文件一样被打开和读取了。使其包含的文档在未进行一次完整提交时便对搜索可见,并且在不影响性能的前提下可以被频繁地执行。

    在这里插入图片描述

二、为什么Elasticsearch是 近 实时搜索

  • 在 Elasticsearch 中,写入和打开一个新段的轻量的过程叫做 refresh 。 默认情况下每个分片会每秒自动刷新一次。
  • 文档的变化并不是立即对搜索可见,但会在一秒之内变为可见。

三、如何解决索引了一个文档然后却没有搜到

  • 使用 refresh API 执行一次手动刷新: /users/_refresh
  • 尽管刷新是比提交轻量很多的操作,它还是会有性能开销。当写测试的时候, 手动刷新很有用,但是不要在生产环境下每次索引一个文档都去手动刷新

四、哪种情况不需要每秒刷新

4.1、使用 Elasticsearch 索引大量的日志文件

  • 可能只想优化索引速度而不是近实时搜索, 可以通过设置 refresh_interval , 降低每个索引的刷新频率。

    {"settings": {"refresh_interval": "30s"}
    }
    

4.2、使用 Elasticsearch建立一个大的新索引时

  • refresh_interval 可以在既存索引上进行动态更新。

  • 在生产环境中,当你正在建立一个大的新索引时,可以先关闭自动刷新。

    # 关闭自动刷新
    PUT /users/_settings
    { "refresh_interval": -1 
    }
    
  • 然后,待开始使用该索引时,再设置自动刷新。

    # 每一秒刷新
    PUT /users/_settings
    { "refresh_interval": "1s" 
    }
    
http://www.lryc.cn/news/17962.html

相关文章:

  • OAK相机深度流探测草莓距离
  • 文件共享服务器(CIFS)的相关知识及指令
  • springcloud-2service consumer
  • JavaScript 进阶--charater3
  • Solon2 之基础:三、启动参数说明
  • 引入防关联浏览器以防止数据盗窃
  • Spring的一些知识点
  • 使用WordPress快速搭建外贸网站教程
  • 在 vue 或 react 项目中使用 mockjs 搭建 mock server
  • 【十一届蓝桥杯】
  • vm 网络配置
  • 2023年CDGA考试-第11章-数据仓库和商务智能(含答案)
  • 从0-1搭建流媒体系统之live555 安装、运行、转发、拉流
  • 搭建个人博客保姆级教程(二)
  • 数字图像处理与Python实现-Pillow图像处理
  • HMM隐马尔可夫模型 | 关键原理+面试知识点
  • 【Leedcode】数据结构中链表必备的面试题(第三期)
  • D1.Chopping Carrots (Easy Version)【数学,二分,暴力,思维】
  • 【Maven】(二)使用 Maven 创建并运行项目、聊聊 POM 中的坐标与版本号的规则
  • (考研湖科大教书匠计算机网络)第六章应用层-第六节:电子邮件
  • 一、初识TypeScript、什么是类型系统
  • 一文了解什么是字节对齐(超详细)
  • Java无法通过形参设置为null改变实参
  • GEE:样本点选择教程
  • 3.知识图谱相关学习资料汇总,提供系统化的知识图谱学习路径。一份详细的指南,补全你知识的漏洞
  • TypeScript学习笔记(一)编译环境、数据类型、函数类型、联合类型
  • 为什么要移除数据库物理外键?
  • Linux 计划任务讲解
  • Qt智能指针模板类的使用方式和区别总结
  • 【STL】模拟实现vector