elasticsearch 的一次写入数据的过程

 从官方文档上可以看到的是,官方推荐我们在搭ES集群的时候,留一半以上的内存给lucence,还说 lucence 是基于 filesystem cash 的。

  我们可以从一次 ES 的写入数据的过程来看看为什么要这样做,以及里边的一些优化点。 

  另外下边附了一些文章链接,都很好,推荐看。

 

 # # ES 的写入过程

 我只用文字来描述一个大题上的流程:将数据写入到 Lucence;定时进行一个 refresh 操作,将Lucence 的数据写入到文件系统缓存中,然后最后再写入到磁盘中。

  详细介绍:我们调用一次写入的 api,文档写入到 Lucence,这是存储在内存中的,这个时候,如果服务器宕机,是会丢失数据的,另外此时数据写入到了Lucence,是无法被立即被检索到的,接着是进行了一次 refresh 的操作,将数据写入到了文件缓存系统中。此时的数据可以被检索到,但是仍然会丢失数据。 最后才写入到磁盘中去,数据才不会丢失。

   再关注一些上述的几个关键点:一个是refresh,这个refresh操作的时间间隔由 refresh_interval参数控制,默认为1s, 当然还可以在写入请求中带上refresh表示写入后立即refresh,另外还可以调用refresh API显式refresh。另外一个是从写入磁盘的触发的条件:flush操作 另外每30分钟或当translog达到一定大小(由 index.translog.flush_threshold_size控制,默认512mb), ES会触发一次flush操作,此时ES会先执行refresh操作将buffer中的数据生成segment,然后调用lucene的commit方法将所有内存中的segment fsync到磁盘。此时lucene中的数据就完成了持久化,会清空translog中的数据(6.x版本为了实现sequenceIDs,不删除translog)

 参考文章:https://zhuanlan.zhihu.com/p/94915597

  这一篇更好一点:https://zhuanlan.zhihu.com/p/34669354

  这一篇流程图很清晰,文章简短,可以在熟悉以后看,一目了然:https://juejin.im/post/5d39a5a2f265da1ba252a55f


# # 基于这一点的 ES优化
https://juejin.im/post/5c8f42f16fb9a0710a1bbee9

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataX是一个用于数据同步的开源工具,它提供了丰富的插件来支持不同的数据源和目标。根据引用[2],DataX插件的开发模式是基于Record的抽象,各个插件只需要按照规范进行开发即可。引用[3]中提到,DataX的打包成功后的包结构中包含了插件目录。 对于Elasticsearch读插件的二次开发,你可以参考DataX的插件开发规范和文档。首先,你需要了解Elasticsearch数据结构和API,以便在插件中进行数据读取操作。然后,你可以在DataX的插件目录中创建一个新的插件目录,并按照规范进行插件的开发。在插件的配置文件中,你需要指定Elasticsearch的连接信息和查询条件等参数。 在插件的开发过程中,你可以使用DataX提供的各种工具和接口来简化开发和测试。例如,你可以使用DataX的RecordReader接口来读取Elasticsearch中的数据,并将其转换为DataX的Record对象。你还可以使用DataX的各种工具类来处理数据转换和批量写入等操作。 最后,你可以使用DataX的命令行工具来运行你开发的插件,并通过配置文件指定插件的参数和数据源信息。例如,你可以使用类似于引用[1]的命令来运行你的Elasticsearch读插件,并指定数据源的路径和插件的配置文件。 总结起来,要进行DataX的Elasticsearch读插件的二次开发,你需要了解Elasticsearch数据结构和API,按照DataX的插件开发规范进行插件的开发,使用DataX的工具和接口简化开发和测试,最后使用DataX的命令行工具来运行你开发的插件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值