Elasticsearch
少加点香菜
座中泣下谁最多 江州司马青衫湿
展开
-
【Elasticsearch源码】节点的启动和关闭流程分析
1 Node的启动流程节点的启动整体流程如下所示:2 启动过程分析启动入口: 通过启动脚本bin/elasticsearch启动ES,在distribution模块中的/src/bin目录下面,脚本先载入了jvm配置文件jvm.options。最后启动org.elasticsearch.bootstrap.Elasticsearch这个主类中的main方法。 exec \ #执...原创 2020-01-22 17:31:02 · 9135 阅读 · 0 评论 -
【Elasticsearch源码】CCR源码分析(二)
接上一篇:【Elasticsearch源码】CCR源码分析(一)。sendShardChangesRequest方法最终进入到ShardChangesAction.TransportAction#shardOperation,跟据上面的read request,从Translog中获取该shard的seq_no范围内的所有Operation,返回最新的shard需要的Operation。 ...原创 2020-01-21 19:54:15 · 8722 阅读 · 0 评论 -
【Elasticsearch源码】CCR源码分析(一)
1 CCR的基本概念什么是CCR?CCR( cross-cluster replication):跨集群复制是ES 6.5发布的一个新的特性:可以将两个集群中的数据进行远程复制。集群复制类似于数据订阅的方式,一个集群的数据可以被多个集群订阅,也就是可以被复制到多个集群上面去。CCR 有两个角色,一个是 Leader,表示数据的源头,另外一个Follower,表示数据的订阅方,得到的是数...原创 2020-01-21 19:53:25 · 12344 阅读 · 0 评论 -
【Elasticsearch源码】-7.x源码编译
要学习源码之前,肯定要进行Elasticsearch源码的编译:前期准备首先要下载源码:https://github.com/elastic/elasticsearch/releases,以最新的7.1版本为例,下载源码包:安装JDK和Gradle:JDK需要jdk12以上,Gradle5.2.1,我安装了JDK12和Gradle 5.2.1:JDK和Gradle安装方法自行百度...原创 2020-01-15 15:15:27 · 6534 阅读 · 6 评论 -
【Elasticsearch源码】查询源码分析(二)
接上一篇:【Elasticsearch源码】查询源码分析(一)。上篇讲到请求通过遍历每个shard发送请求,执行executePhaseOnShard方法,转发请求的同时定义了一个Listener,用于监听处理结果。 private void performPhaseOnShard(final int shardIndex, final SearchShardIterator sha...原创 2020-01-15 10:17:55 · 9808 阅读 · 0 评论 -
【Elasticsearch源码】查询源码分析(一)
1 前言前言分析过ES的写入流程源码,详情见【Elasticsearch源码】写入源码分析。Elasticsearch(ES)的查询接口具有分布式的数据检索、聚合分析能力,数据检索能力用于支持全文检索、日志分析等场景,如Github平台上的代码搜索、基于ES的各类日志分析服务等;聚合分析能力用于支持指标分析、APM等场景,如监控场景、应用的日活/留存分析等。本文基于6.7.1版本,主要分...原创 2020-01-14 19:23:04 · 11721 阅读 · 0 评论 -
【Elasticsearch源码】写入源码分析(四)
接上一篇:【Elasticsearch源码】写入源码分析(三)。前面讲到了一个checkpoint(检查点的概念),在每次写入数据过程都需要更新LocalCheckpoint(本地检查点)和GlobalCheckpoint(全局检查点)。3.3 更新checkpoint了解checkpoint之前,先来看下Primary Terms和Sequence Numbers:Primary...原创 2020-01-13 16:30:16 · 15504 阅读 · 1 评论 -
【Elasticsearch源码】写入源码分析(三)
接上一篇:【Elasticsearch源码】写入源码分析(二)。3.2.5 写主分片节点流程代码入口:TransportReplicationAction.PrimaryOperationTransportHandler#messageReceived,然后进入AsyncPrimaryAction#doRun方法。检查请求: 1.当前是否为主分片;2.allocationId是否是预期值;...原创 2020-01-11 17:56:24 · 9638 阅读 · 2 评论 -
【Elasticsearch源码】写入源码分析(二)
接上一篇:【Elasticsearch源码】写入源码分析(一)如果需要自动创建索引,则需要遍历bulk的所有index,然后检查index是否需要自动创建,对于不存在的index,则会加入到自动创建的集合中,然后会调用createIndex方法创建index。index的创建由master来把控,master会根据分片分配和均衡的算法来决定在哪些data node上创建index对应的shard...原创 2020-01-11 17:14:46 · 11774 阅读 · 0 评论 -
【Elasticsearch源码】写入源码分析(一)
1 前言Elasticsearch(ES)是一个基于Lucene的分布式存储和搜索分析系统,本文希望从源码的角度分析ES在保证数据的可靠性、实时性和一致性前提下,其写入的具体流程。写入也是整个ES系统里面,最主要的流程之一,便于更好的理解ES的内部原理和逻辑,关于ES数据存储结构请参考:【Elasticsearch】原理-Elasticsearch数据存储结构与写入流程。2 写入基本流程...原创 2020-01-11 16:33:51 · 12568 阅读 · 1 评论 -
【Elasticsearch】优秀实践-ES+Hbase的实现
前言因为之前在项目上,需要用到ES+Hbase方案,最后经过各种测试和验证,最终项目完成上线。因为在实际的过程遇到不少的问题,和理论还是有一定的差距。纸上得来终觉浅,绝知此事要躬行。----古人诚不欺我基本原理很简单,将Elasticsearch的DOC ID和Hbase的rowkey相关联:将源数据根据业务特点划分为索引数据和原始数据:索引数据:指需要被检索的字段,存储在El...原创 2020-01-09 19:53:55 · 11150 阅读 · 0 评论 -
【Elasticsearch】源码-Elasticsearch源码基础模块
ES源码的主要基础模块:ClusterCluster模块主要是主节点执行集群管理的封装实现,管理集群状态,维护集群层面的配置信息等。主要有:管理集群状态,将新生成的集群状态发布到集群的所有节点调用allocation模块执行分片分配,决策那些分片应该分配到哪个节点在集群各节点中直接迁移分片,保持数据平衡Allocation封装了分片分配相关的功能和策略,包括主分片的分配和副本...原创 2020-01-08 20:26:06 · 1809 阅读 · 0 评论 -
【Elasticsearch】原理-Elasticsearch数据存储结构与写入流程
1 前言由于Elasticsearch使用Lucene来处理shard级别的索引和查询,因此数据目录中的文件由Elasticsearch和Lucene编写。Lucene负责编写和维护Lucene索引文件,而Elasticsearch在Lucene之上编写与功能相关的元数据,例如字段映射,索引设置和其他集群元数据,用户和支持功能由Elasticsearch提供。2 ES数据2.1 Nod...原创 2020-01-08 20:19:05 · 11348 阅读 · 0 评论 -
【Elasticsearch】优秀实践-Elasticsearch查询调优
前言一个系统查询慢往往是由多种因素造成的,在处理集群查询慢的问题上,先将问题分解。1) 需要观察是系统哪种资源受限,例如内存、CPU或磁盘IO等,是否存在硬件瓶颈;2) 要确定查询语句是否符合业务场景,是否存在查询语句优化空间;3) 最后判断数据结构是否合理,不合理的数据设计对查询的响应影响很大。使用更快的硬件查询性能大部分场景下更多的在于IO能力,很多时候查询速度受限于磁...原创 2020-01-08 20:05:25 · 8780 阅读 · 0 评论 -
【Elasticsearch】优秀实践-你的ES怎么查的慢了?
前言经常会有人吐槽,Elasticsearch为什么查着查着突然就慢了?笔者总结了常见的一些导致查询慢的场景,供大家排查。go go goElasticsearch查询慢问题排查思路Elasticsearch的查询慢的问题往往是由多种因素造成的,同时我们也需要遵循Elasticsearch的查询准则:ES适合top N的查询,不适合大数据量返回的查询。场景1 内存参数配置不合...原创 2020-01-08 19:53:33 · 5644 阅读 · 2 评论 -
【Elasticsearch】优秀实践-Elasticsearch写入调优
基本优化手段Elasticsearch默认的设置和参数配置下,是综合考虑了数据的可靠性、搜索实时性、写入速度等因素。但在某些场景中,业务对数据的可靠性和搜索实时性要求并不高,反而对写入速度要求高,可以通过调整一些策略,优化写入速度。综合来说,提升写入速度可以从以下几个方面入手:1) 加大index refresh间隔,除了降低IO,更重要的是降低了segment merge的频率;2) ...原创 2020-01-08 19:29:43 · 8870 阅读 · 0 评论 -
【Elasticsearch】优秀实践-你的ES为什么写的慢了?
前言经常会有人吐槽,Elasticsearch为什么写着写着突然就慢了?笔者总结了常见的一些导致写入慢的场景,已供大家排查。话不多说,进入正题…Elasticsearch写入慢问题排查思路Elasticsearch的写入场景相对比较简单,绝大部分场景下我们都是使用bulk API进行写入操作,列举了下面一些场景可能会导致写入慢的问题。场景1 内存参数配置不合理。是否给El...原创 2020-01-08 19:19:59 · 12812 阅读 · 1 评论 -
【Elasticsearch】初篇-带你认识Elasticsearch
从2010年开始,Elasticsearch已经经历了近10年的发展,特别是近几年Elasticsearch愈发火热,成了各个大厂必不可少的搜索引擎,加上其成熟的Elastic Stack生态体系,发展迅猛。Elasticsearch 官方地址:各类完全的技术文档等你来学习版本更新速度让人应接不暇,几乎每一周半个月就出一个版本,而且有号称github上最优美的开源代码,所以不管从什么角度都有不...原创 2020-01-07 20:39:10 · 1687 阅读 · 0 评论