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

Elasticsearch内存

核心概念

  1. 基于Lucene
  2. Java应用

内存使用分析

Lucene的内存消耗

  1. 倒排索引。(堆内存)
    Lucene中,索引是存储在磁盘中,一个索引(Index)由多个段(Segment)组成。当启动IndexSearcher时,会把倒排索引加载到内存中,基于不同的数据类型生成不同的词典,比如text生成FST结构的词典,数值类型生成Bkd tree。
  2. Doc Values(操作系统缓存)
    当Doc Values占用的内存小于可用内存时,会加载到内存中,否则会放到page cache中。

Elasticsearch内存

  1. 基本的元数据(堆内存)
    包括node的元数据和Cluster的元数据,还有内部的一些其他服务,比如线程池,线程队列等等。

  2. field data cache(堆内存)
    用于对分词字段进行排序或聚合。使用过程中会将所有字段的值加载到内存中,而且构建缓存的代价很高。在正常使用的过程中,不建议使用这个字段进行聚合或者排序,错误的使用很容易造成OOM。
    请注意,默认的_id这个字段就是text,对他进行排序时会使用fielddata cache

  3. Node Query Cache(堆内存)
    每个节点的查询缓存,以段为基本单元,详情查看我的另外一篇文章

  4. Shard Request Cache(堆内存)
    Shard级别的缓存。主要用于缓存size=0的请求,aggs和suggestions,还有就是hits.total。

  5. Indexing Buffer(堆内存)
    用于缓存新索引的数据,当空间填满之后,会将数据写到磁盘上成为一个新的段。

  6. 聚合操作(堆内存)
    聚合会根据需求构建不同的bucket,对单个字段进行聚合可能产生固定数量的bucket,但是某些场景下,比如深层嵌套聚合,或者单个字段不同值过多,都有可能导致生成大量的bucket而OOM。具体可参考


http://www.cnnetsun.cn/news/3262908.html

相关文章:

  • AD7175-8与MK64FX512VDC12高精度数据采集系统设计
  • 如何用免费开源工具3步打造个人离线漫画库:哔咔漫画下载器终极指南
  • 从电视盒到全能服务器:Amlogic S9xxx Armbian项目终极指南
  • AI军事应用伦理边界:从技术实现到开发者责任
  • 如何3步打造个人哔咔漫画离线图书馆:免费多线程下载器完全指南
  • Meta Muse Image模型:AI图像生成与社交整合技术解析
  • 2026行业甄选指南:优质小程序公司综合实力盘点
  • Pandas 2.2 数据清洗3步法:从‘脏’CSV到可视化-ready的DataFrame
  • UE4/UE5 C++项目第三方库路径配置:.Build.cs动态构建指南
  • 5分钟掌握Elsevier投稿进度:科研工作者的智能审稿状态管家
  • 卷土重来的 curl 命令:我如何从一个 404 错误中逃生
  • 微信支付 APIv3 Java SDK 0.2.17 实战:Native支付下单与自动签名验签 5步集成
  • STL转STEP格式转换终极指南:从3D打印到工程设计的无缝衔接
  • STM32F469II与ADS131M02构建高精度数据采集系统
  • 【限时解密】Gemini Enterprise Tier认证通道关闭倒计时:Google Partner团队透露的最后48小时准入策略
  • Lauterbach Trace32安装与Zynq R52实时变量曲线绘制指南
  • 抖音下载神器终极指南:douyin-downloader 如何一键保存无水印视频
  • 作为一个项目程序开发人员,如何高效使用 Codex?
  • 大数据毕设项目:基于 SpringBoot+Hadoop 的手机销售趋势预测分析系统的设计与实现 手机电商销售大数据分析系统 (源码+文档,讲解、调试运行,定制等)
  • 百度文库免费下载工具:三步获取PDF文档的终极解决方案
  • AI编程时代如何避免成为代码文盲:从工具依赖到思维提升
  • 如何快速批量下载国家中小学智慧教育平台电子课本:完整指南
  • 技术专题:LeRobot中舵机控制的抽象化架构与多协议兼容设计
  • Perplexity vs Google/Bing:2024年实测17项指标,92%的开发者已悄悄切换?
  • 徐玉生DNA双螺旋方法论在具体案例中的应用解析
  • 1.Java中Field有没有实现iterable接口?2.假如使用增强for遍历Field[ ]数组底层调用的是普通for还是Iterator迭代器?3.哪些增强for遍历底层才会使用到Iterat
  • TDA7468与PIC18LF46K22音频处理系统设计与优化
  • Dify实战指南:从零构建企业级AI应用,快速集成LLM与RAG
  • 如何用三步骤彻底解决《边缘世界》模组冲突?RimSort开源工具完整指南
  • 终极指南:如何用现代C++库OpenXLSX高效处理Excel文件