elasticsearch准实时原理

栏目: 后端 · 发布时间: 4年前

内容简介:elasticsearch被称为准实时搜索,原因是对es的写入操作成功后,写入的数据需要1秒钟后才能被搜索到,因此es搜索是准实时或者又称为近实时(elasticsearch底层使用的Lucene,而Lucene的写入是实时的。但Lucene的实时写入意味着每一次写入请求都直接将数据写入硬盘,因此频繁的I/O操作会导致很大的性能问题。当一个写请求发送到es后,es将数据写入

elasticsearch被称为准实时搜索,原因是对es的写入操作成功后,写入的数据需要1秒钟后才能被搜索到,因此es搜索是准实时或者又称为近实时( near real time )。

elasticsearch底层使用的Lucene,而Lucene的写入是实时的。但Lucene的实时写入意味着每一次写入请求都直接将数据写入硬盘,因此频繁的I/O操作会导致很大的性能问题。

原理

elasticsearch准实时原理

当一个写请求发送到es后,es将数据写入 memory buffer 中,并添加事务日志( translog )。如果每次一条数据写入内存后立即写到硬盘文件上,由于写入的数据肯定是离散的,因此写入硬盘的操作也就是随机写入了。硬盘随机写入的效率相当低,会严重降低es的性能。

因此es在设计时在 memory buffer 和硬盘间加入了 Linux 的页面高速缓存( File system cache )来提高es的写效率。

当写请求发送到es后,es将数据暂时写入 memory buffer 中,此时写入的数据还不能被查询到。默认设置下,es每1秒钟将 memory buffer 中的数据 refresh 到Linux的 File system cache ,并清空 memory buffer ,此时写入的数据就可以被查询到了。

File system cache 依然是内存数据,一旦断电,则 File system cache 中的数据全部丢失。默认设置下,es每30分钟调用 fsyncFile system cache 中的数据 flush 到硬盘。因此需要通过 translog 来保证即使因为断电 File system cache 数据丢失,es重启后也能通过日志回放找回丢失的数据。

translog 默认设置下,每一个 indexdeleteupdatebulk 请求都会直接 fsync 写入硬盘。为了保证 translog 不丢失数据,在每一次请求之后执行 fsync 确实会带来一些性能问题。对于一些允许丢失几秒钟数据的场景下,可以通过设置 index.translog.durabilityindex.translog.sync_interval 参数让 translog 每隔一段时间才调用 fsync 将事务日志数据写入硬盘。

解决

对于需要写入后实时查询的数据,可以通过手动 refresh 操作将 memory buffer 的数据立即写入到 File system cache 。当然,该解决方案的代价就是降低了ES的写性能。

  1. 单个文档更新后立即 refresh
PUT /test/_doc/1?refresh
{"test": "test"}
PUT /test/_doc/2?refresh=true
{"test": "test"}
复制代码

www.elastic.co/guide/en/el…

  1. refresh 整个索引的 memory buffer
POST /test/_refresh
复制代码

www.elastic.co/guide/en/el…


以上所述就是小编给大家介绍的《elasticsearch准实时原理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

删除

删除

[英] 维克托•迈尔-舍恩伯格(Viktor Mayer-Schönberger)著 / 袁杰 译 / 浙江人民出版社 / 2013-1 / 49.90元

《删除》讲述了遗忘的美德,为读者展现了大数据时代的取舍之道。 《删除》从大数据时代信息取舍的目的和方法分别诠释了“被遗忘的权利”。维克托首先回溯了人类追寻记忆的过程,之后提出数字技术与全球网络正在瓦解我们天生的遗忘能力。对此,他考察了促进遗忘终止4大驱动力——数字化,廉价的存储器,易于提取,全球性访问。之后,他提出了当前数字化记忆的两大威胁——信息权力与时间,并给出了应对威胁的6大对策——数......一起来看看 《删除》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具