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

Elasticsearch 7.15 存储类型详解

核心概念

index.store.type 是一个索引级设置,它决定了 Elasticsearch 在节点上使用哪种底层文件系统实现来存储和访问索引数据(分片)。

在 7.15 版本中,这个设置主要用于应对不同的操作系统和硬件环境,以优化 I/O 性能。

主要可选值及其含义

在 Elasticsearch 7.15 中,index.store.type 主要有以下几个可选值:

  1. fs (默认值)

    • 描述:这是默认推荐的设置。它不是一个具体的实现,而是一个“智能选择器”。
    • 行为:Elasticsearch 会根据运行环境和操作系统,自动选择最合适的存储类型。在大多数 Linux 系统上,它会选择 hybridfs。在其他系统(如 Windows 或 macOS)上,它可能会选择 simplefsniofs
    • 建议:除非你有非常明确的理由,否则应该坚持使用默认的 fs。Elasticsearch 的自动选择通常是最优的。
  2. hybridfs

    • 描述:这是 fs 类型在 Linux 上通常选择的实际实现。它是一个混合型实现,结合了 niofsmmapfs 的优点。
    • 行为:对于索引文件(如 .cfs 复合文件),它使用 mmapfs(内存映射)来利用其快速读取的优势。对于其他类型的文件(如事务日志 translog),它使用 niofs 来保证稳定性。
    • 适用场景:这是大多数 Linux 生产环境的理想选择。
  3. niofs

    • 描述:使用 Java 的 NIO(FileChannel)来读写文件。
    • 优点:线程之间可以共享同一个文件描述符,这意味着即使有多个线程访问同一个分片,所需的文件描述符(file descriptors)也相对较少。
    • 缺点:性能通常不如 mmapfs
    • 适用场景:适用于所有支持 Java NIO 的平台(几乎所有平台)。如果你遇到文件描述符耗尽的问题,可以考虑使用此类型,但通常 hybridfs 是更好的选择。
  4. mmapfs

    • 描述:使用内存映射文件(mmap)来映射索引文件到虚拟内存中。
    • 优点:读操作非常快,因为它可以直接利用操作系统的页面缓存,减少了从内核空间到用户空间的数据拷贝。
    • 缺点
      • 会占用大量的虚拟地址空间(在 64 位系统上这通常不是问题)。
      • 可能会“浪费”一部分内存,因为映射的文件可能不会被立即回收。
      • 最重要的:它需要消耗大量的文件描述符。如果管理不当,很容易导致文件描述符耗尽,使节点无法工作。
    • 适用场景:对于以读为主的、索引大小小于虚拟地址空间的工作负载,且你能够妥善管理文件描述符限制(vm.max_map_count)的系统。使用需谨慎
  5. simplefs

    • 描述:使用普通的 Java 随机访问文件(RandomAccessFile)。
    • 缺点:性能较差,在多线程访问时存在瓶颈。
    • 建议不推荐在生产环境中使用。主要用于一些简单的测试或兼容性极老的 JVM。

如何配置

你可以在创建索引时指定该设置,或者通过 update-index-settings API 动态地更新已存在的索引(但某些更改可能不会对已存在的分片立即生效)。

示例 1:创建索引时指定

PUT /my_index
{"settings": {"index.store.type": "niofs"}
}

示例 2:动态更新现有索引的设置

PUT /my_index/_settings
{"index.store.type": "niofs"
}

示例 3:在 elasticsearch.yml 中配置全局默认值(不推荐)
虽然可以,但强烈不推荐这样做,因为它会忽略不同机器的具体硬件和环境差异。最佳实践是使用默认的 fs,让 Elasticsearch 自动选择。

index.store.type: niofs

总结与建议

存储类型推荐度特点适用场景
fs★★★★★默认值,自动选择最佳实现(Linux 上通常是 hybridfs绝大多数生产环境
hybridfs★★★★☆混合模式,结合 mmapfs(读快)和 niofs(写稳)的优点Linux 生产环境(是 fs 通常的选择)
niofs★★★☆☆基于 NIO,节省文件描述符,性能适中所有平台,文件描述符有限的系统
mmapfs★★☆☆☆读性能极快,但消耗大量文件描述符和虚拟内存只读场景,且能妥善管理文件描述符的系统
simplefs★☆☆☆☆性能差仅用于测试

给你的最终建议是:

除非你确切的知道为什么要更改它,并且有充分的性能测试证明更改是有效的,否则请永远使用默认的 index.store.type: fs Elasticsearch 的默认行为已经为绝大多数用户和场景做了充分优化。盲目更改此设置可能会引入性能问题或稳定性风险(尤其是 mmapfs 的文件描述符问题)。


文章转载自:

http://bfDouOzL.fthcq.cn
http://3DtMd3r4.fthcq.cn
http://kzhHwdZe.fthcq.cn
http://BL71WEwi.fthcq.cn
http://tb022ega.fthcq.cn
http://pdEfyIaf.fthcq.cn
http://rbx1VJVh.fthcq.cn
http://i9YCp8cl.fthcq.cn
http://QHktYtYf.fthcq.cn
http://mrEu75As.fthcq.cn
http://051K4oNz.fthcq.cn
http://ISQcz6UV.fthcq.cn
http://KEb9aCn8.fthcq.cn
http://fI1BL364.fthcq.cn
http://rN7EtqSF.fthcq.cn
http://R5qthJfQ.fthcq.cn
http://S6Wx3fEz.fthcq.cn
http://Nyv8VNoi.fthcq.cn
http://OgRz3gVv.fthcq.cn
http://YEqKyFHE.fthcq.cn
http://pRoYERbr.fthcq.cn
http://UJyNs6QI.fthcq.cn
http://TbGe77qG.fthcq.cn
http://C91aCUtt.fthcq.cn
http://xHK3wRJX.fthcq.cn
http://dIBbQv79.fthcq.cn
http://sXB1dznv.fthcq.cn
http://WOXlVyDB.fthcq.cn
http://UUA0ZSRo.fthcq.cn
http://22Esbv44.fthcq.cn
http://www.dtcms.com/a/379126.html

相关文章:

  • 深入解析数据结构之栈及其应用
  • (一)昇腾AI处理器技术
  • BUUCTF刷题十一道(14)
  • Linux防火墙-Iptables
  • python访问基于docker搭建的elasticsearch
  • logback-spring.xml文件说明
  • 【PyTorch训练】为什么要有 loss.backward() 和 optimizer.step()?
  • 抖音大数据开发一面(0905)
  • 原生js的轮播图
  • 连接池项目考点
  • ruoyi-flowable-plus框架节点表单的理解
  • js.228汇总区间
  • BERT中文预训练模型介绍
  • 光平面标定建立激光点与世界坐标的对应关系
  • Jmeter执行数据库操作
  • 基于FPGA的图像中值滤波算法Verilog开发与开发板硬件测试
  • 微软Aurora大模型实战:五大数据源驱动、可视化对比与应用
  • 【论文笔记】SpaRC: Sparse Radar-Camera Fusion for 3D Object Detection
  • C++基本数据类型的范围
  • Spring AI(三)多模态支持(豆包)
  • agentic Deep search相关内容补充
  • 第一篇:如何在数组中操作数据【数据结构入门】
  • PYcharm——pyqt音乐播放器
  • OpenAI已正式开放ChatGPT Projects
  • 日系电车销量破万,真正突围了,恰恰说明了电车的组装本质!
  • Linux 防火墙 Iptables
  • 不想考地信,计算机又太卷,所以转型GIS开发
  • PotPlayer 1.7.22611发布:支持蓝光播放+智能字幕匹配
  • LVS负载均衡群集与Keepalived高可用
  • React中hook的用法及例子(持续更新)