`
qindongliang1922
  • 浏览: 2146979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116317
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124587
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58449
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70347
社区版块
存档分类
最新评论

为什么说Elasticsearch搜索是近实时的?

    博客分类:
  • ELK
阅读更多

通过前面两篇文章的介绍,我们大概已经知道了
Elasticsearch处理数据的流程,其中在Elasticsearch和磁盘之间还有一层称为FileSystem Cache的系统缓存,正是由于这层cache的存在才使得es能够拥有更快搜索响应能力。


我们都知道一个index是由若干个segment组成,随着每个segment的不断增长,我们索引一条数据后可能要经过分钟级别的延迟才能被搜索,为什么有种这么大的延迟,这里面的瓶颈点主要在磁盘。

持久化一个segment需要fsync操作用来确保segment能够物理的被写入磁盘以真正的避免数据丢失,但是fsync操作比较耗时,所以它不能在每索引一条数据后就执行一次,如果那样索引和搜索的延迟都会非常之大。

所以这里需要一个更轻量级的处理方式,从而保证搜索的延迟更小。这就需要用到上面提到的FileSystem Cache,所以在es中新增的document会被收集到indexing buffer区后被重写成一个segment然后直接写入filesystem cache中,这个操作是非常轻量级的,相对耗时较少,之后经过一定的间隔或外部触发后才会被flush到磁盘上,这个操作非常耗时。但只要sengment文件被写入cache后,这个sengment就可以打开和查询,从而确保在短时间内就可以搜到,而不用执行一个full commit也就是fsync操作,这是一个非常轻量级的处理方式而且是可以高频次的被执行,而不会破坏es的性能。

如下图:








在elasticsearch里面,这个轻量级的写入和打开一个cache中的segment的操作叫做refresh,默认情况下,es集群中的每个shard会每隔1秒自动refresh一次,这就是我们为什么说es是近实时的搜索引擎而不是实时的,也就是说给索引插入一条数据后,我们需要等待1秒才能被搜到这条数据,这是es对写入和查询一个平衡的设置方式,这样设置既提升了es的索引写入效率同时也使得es能够近实时检索数据。


refresh的用法如下:

````
POST /_refresh   //刷新所有的索引
POST /blogs/_refresh  //刷新指定的索引
````


refresh操作相比commit操作是非常轻量级的但是它仍然会耗费一定的性能,所以不建议在每插入一条数据后就执行一次refresh命令,es默认的1秒的延迟对于大多数场景基本都可以接受。


当然并不是所有的业务场景都需要每秒都refresh一次,如果你短时间内要索引大量的数据,为了优化索引的写入速度,我们可以设置更大的refresh间隔,从而提升写入性能,命令如下:

````
PUT /my_logs
{
  "settings": {
    "refresh_interval": "30s" 
  }
}
````


上面的参数是可以随时动态的设置到一个存在的索引里面,如果我们正在插入超大索引时,我们完全可以先关闭掉这个refresh机制,等写入完毕之后再重新打开,这样以来就能大大提升写入速度。

命令如下:
````
PUT /my_logs/_settings
{ "refresh_interval": -1 }  //禁用刷新机制

PUT /my_logs/_settings
{ "refresh_interval": "1s" }  //设置每秒刷新一次
````




注意refresh_interval的参数是可以带时间周期的,如果你只写了个1,那就代表每隔1毫秒刷新一次索引,所以设置这个参数时务必要谨慎。

有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
  • 大小: 32.9 KB
  • 大小: 31.5 KB
0
0
分享到:
评论
1 楼 yin_bp 2018-03-17  
高性能elasticsearch ORM开发库使用文档
https://my.oschina.net/bboss/blog/1556866

4.6 设置索引刷新机制
往elasticsearch(批量)添加/修改/删除索引时,并不会立即生效,介绍通 api来指定刷新机制

相关推荐

    十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统.pdf

    Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而 Elasticsearch将 Lucene 作为...

    ElasticSearch 可扩展的开源弹性搜索解决方案

     《ElasticSearch 可扩展的开源弹性搜索解决方案》是为希望利用ElasticSearch创建一个快速、灵活的搜索解决方案的开发者而撰写的。如果你正试图学习ElasticSearch或者希望变得更加精通,本书也同样适合。开始学习...

    Elasticsearch总结.doc

    Elasticsearch的特性 分布式、全文检索、近实时搜索和分析、高可用、模式自由、restful 讲述Elasticsearch的架构和Elasticsearch 的核心 概念 二、索引数据 单词 文档矩阵,倒排索引,倒排索引实例,单词词典 三、...

    Elasticsearch顶尖高手系列课程-核心知识篇-课程资料.zip

    相对于Spark Streaming、Storm等大数据实时计算引擎来说,Elasticsearch天生为分布式执行数据分析操作而生的架构,海量数据量级下的近实时(秒级)性能支持,以及无比强大的搜索和聚合分析的语法支持,让ES更加适合...

    elasticsearch-6.7.0

    ElasticSearch(ES)2019最新版下载。Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,...

    elasticsearch-7.6.0-windows-x86_64.rar es工具

    Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计...

    ElasticSearch5.2全网最全技术视频

    (4)学完课程之后,学员除了可以开发复杂的es搜索/分析系统之外,还可以掌握在任何一个公司里,从零开始搭建一个分布式的大型es集群,并制定完善的监控,运维,管理,优化等方案 (4)大型项目架构篇 课程特点 (1...

    elasticsearch设计思路

    介绍elasticsearch如何实现一个分布式近实时的搜索引擎的

    elasticsearch源码.rar

    Elasticsearch(ES)是一个基于Lucene的近实时分布式存储及搜索分析系统,其应用场景广泛,可应用于日志分析、全文检索、结构化数据分析等多种场景,既可作为NoSQL数据库,也可作为搜索引擎。由于ES具备如此强悍的能力...

    Elasticsearch技术解析与实战(朱林)

    朱林著的这本Elasticsearch技术解析与实战,非常适合需要引入es作为搜索引擎的开发者,书中从原理到实践,一步步深入,让开发者全面掌握es这门近实时的搜索技术

    elasticsearch-7.7.0-linux-x86_64.tar.gz

    Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Elasticsearch是一个...

    elasticsearch-5.6.11.tar.gz

    Elasticsearch:,用于全文检索,站内搜索,价格监控,数据监控等,支持近实时响应

    最新windows版elasticsearch

    Elasticsearch是一个强大的搜索引擎,提供了近实时的索引、搜索、分析功能。Elasticsearch技术解析与实战是作者根据自己多年的开发经验,总结了使用和开发Elasticsearch的实战经验。

    Elasticsearch调优实践.pdf

    Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,不仅有近实时的查询能力,还具有强大的聚合分析能力。因此在全文检索、日志分析、监控系 统、数据分析等领域ES均有广泛应用。而完整的Elastic Stack体系...

    es搜索引擎.doc

    elasticsearch是一个基于Lucene的高扩展的分布式搜索服务器,支持开箱即用。 2、elasticsearch隐藏了Lucene的复杂性,对外提供Restful 接口来操作索引、搜索。 突出优点: 1.扩展性好,可部署上百台服务器集群,...

    ElasticSearch入门(一)单节点初体验

    What:ElasticSearch 是一个分布式、RESTful风格的搜索和数据分析引擎。以下简称ES。 Features: 具有近实时的全文检索能力、极其方便的横向扩展能力,怎么理解呢?可以简单理解为快、有弹性。 Why: 我们知道要在传统...

    滴滴Elasticsearch多集群架构实践

    Elasticsearch是基于Lucene实现的分布式搜索引擎,提供了海量数据实时检索和分析能力。Elastic公司开源的一系列产品组成的ElasticStack,可以为日志服务、搜索引擎、系统监控等提供简单、易用的解决方案。滴滴2016年...

    Elasticsearch入门基础学习

    Elasticsearch入门基础学习 带你走近一个生产环境的Elasticsearch 用详尽的概念、底层的原理、生动的案例、解开Elasticsearch神秘面纱

Global site tag (gtag.js) - Google Analytics