
elasticsearch
文章平均质量分 88
胖柯G
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记一次ES写入优化
在translog文件被 fsync 到磁盘前,如果发生重启则被写入的文件就会丢失,因此如果你的系统对于丢失 sync_interval 时间段的数据也无所谓,那将translog的刷盘操作修改为异步对写入性能提高很有帮助,虽然sync_interval设置的很小,但是如果是批量写入数据系统宕机情况下丢失数据量也是很大的,需要慎重依据自己的场景使用,避免数据丢失。我们系统通过ES存储告警数据,性能测试过程中测试反馈有一台单机环境ES数据有延迟,随着运行时间增长,延迟越来越明显,影响了正常功能需要解决。原创 2024-11-24 19:26:41 · 3051 阅读 · 0 评论 -
lucene数据写入-03数据刷盘
回到org.apache.lucene.index.FreqProxTermsWriter#flush方法,写入成功调用close方法,最终调用的还是org.apache.lucene.codecs.blocktree.BlockTreeTermsWriter#close方法。继续跟踪执行org.apache.lucene.index.DocumentsWriter#doFlush方法,最终调用org.apache.lucene.index.DefaultIndexingChain#flush方法。原创 2024-11-16 18:17:32 · 1740 阅读 · 0 评论 -
lucene数据写入-02倒排数据缓存组织
term的docID+freqs信息,文档号为2,出现了3次,存储为[docid<<1+0, freq],docid取差值为1,因而存储为[2, 3],但是存储docID和freqs的空间已经满了,一样需要进行扩容,这里新分配的快层级为2,空间长度为14,结束符号为17,重新的尾部分配空间,将原来分隔符前的三个字节copy到新位置,原来的分隔符和空出来的空间组成一个int保存指针信息。然后写入文档1的第一个common的位置信息,0<<1 + 0 = 0,写入到下标为21的位置。原创 2024-10-26 15:03:38 · 2001 阅读 · 0 评论 -
lucene数据写入-01写入流程
文件结构名称扩展名数据结构说明Segments Filesegments.gen segments_NSegmentInfos保存当前索引中所有的段信息的集合,索引中所有可用的段信息都存储在段文件segment_NLock Filewrite.lock写锁,用于阻止多个IndexWriter写同一个索引文件Segment Info.siLucene70SegmentInfoFormatsegment的元数据信息,指明这个segment都包含哪些文件原创 2024-10-19 16:32:44 · 2298 阅读 · 0 评论 -
lucene学习-FST源码分析
第三步插入do/17,do和deep有公共字符d可以将字符p和字符e写入FST,这里字符p的flags和上面字符t的flags相同为15,表明arc对应字符是term最后一个字符,arc是当前节点最后一条边,arc连接的两个节点是临近节点不需要记录target,arc的目标节点是一个终止节点,字符e的flags和上面的字符a的flags相同,表明arc是当前节点最后一条边而且arc连接的两个节点是临近节点。将父节点指向冻结后的节点,冻结后的节点就是compileNode,该方法就是将节点转变为冻结节点。原创 2024-08-10 14:11:54 · 4243 阅读 · 0 评论 -
elasticsearch源码分析-08Serch查询流程
这里可以看到首先会执行lucene的查询,然后对查询结果进行打分、执行聚合逻辑,然后生成SearchPhaseResult返回。和Get查询一样,请求会经过转发dispatchRequest,查询路由对应的handler处理类,然后执行处理。数据节点查询数据后返回协调节点,我们继续回到executePhaseOnShard方法执行回调。search操作会发送请求到索引下的所有分片,相同分片只会发送到主分片或副本分片。这里收集本集群和跨集群及其他集群需要查询的索引,这里我们主要是分析本集群搜索。原创 2024-08-03 15:11:46 · 558 阅读 · 0 评论 -
elasticsearch源码分析-07GET查询流程
而TransportGetAction继承了TransportSingleShardAction最终调用它的doExecute方法。ES的读取分为Get和search两种,get是根据id从索引中获取内容,而search是根据关键词从倒排索引中获取内容。就是将请求转发到其他节点执行,处理逻辑和上面的逻辑一致,其他节点执行后会把数据返回,然后节点把数据返回给用户请求。获取线程池然后执行,最终都会调用processMessageReceived方法。get请求的处理在actionModule中进行注册。原创 2024-07-27 14:52:27 · 482 阅读 · 0 评论 -
elasticsearch源码分析-06索引恢复
索引恢复allocation阶段最后会向集群发布一个新的集群状态,状态发布后会进入IndicesClusterStateService的applyClusterState应用集群状态@Overridepublic synchronized void applyClusterState(final ClusterChangedEvent event) { if (!lifecycle.started()) { return; } final ClusterSta原创 2024-07-20 23:27:11 · 1178 阅读 · 0 评论 -
elasticsearch源码分析-05分片分配
副本分片分配也需要获取一次shard信息,但是之前主分片分配已经获取了一次数据,副本分片分配可以直接使用上次执行获取分片的结果,如果没有node可以分配则查看是否延迟分配,然后执行initialize方法。主分分配器primaryShardAllocator和replicaShardAllocator都继承了BaseGatewayShardAllocator方法,在执行allocateUnassigned时主分片分配和副本分片分配会执行相同的方法,只是会执行不同的决策。原创 2024-07-13 14:05:10 · 738 阅读 · 0 评论 -
elasticsearch源码分析-04集群状态发布
es使用二阶段提交来实现状态发布,第一步是push及先将状态数据发送到node节点,但不应用,如果得到超过半数的节点的返回确认,则执行第二步commit及发送提交请求,二阶段提交不能保证节点收到commit请求后可以正确应用,也就是它只能保证发了commit请求,但是无法保证单个节点上的状态应用是成功还是失败的。回到MasterService的runTasks方法中新的集群状态已经生成并返回,然后判断集群状态和之前的集群状态是否相同,如果发生变化则将进入集群状态发布阶段,将最新的集群状态广播到所有节点。原创 2024-07-06 14:32:45 · 2132 阅读 · 0 评论 -
elasticsearch源码分析-03选举集群状态
首先判断只有主节点可以执行状态选举,然后判断是否已经在执行了状态恢复任务了,如果是则直接返回;遍历所有节点选择返回的索引元数据版本最高的节点作为索引级元数据,然后将索引级元数据添加到metadataBuilder中。从磁盘读取构建索引级元数据和集群级元数据,用于构建集群状态对象ClusterState。开始通过版本号选择集群层元数据,比较版本号,选择版本号最大的集群状态。构造集群状态,删除索引信息,下面会选择索引级元数据。我们继续回到每个节点发送请求的返回处理。构造恢复后的集群级元数据和索引级元数据。原创 2024-06-29 12:05:36 · 812 阅读 · 0 评论 -
elasticsearch源码分析-02选举主节点
NodesFaultDetection运行在master节点,master也是定时发送心跳ping请求给非master节点,如果发送失败则先重试,重试达到一定次数调用notifyNodeFailure,如果返回连接错误则调用handleTransportDisconnect(node)如果选择的master节点是本节点加入的节点则设置选举结束。首先会比较两个候选节点的集群状态版本信息,如果版本信息比较新则排在前面,如果版本号相同则需要比较两个节点的节点id,然后选择排在最前面的一个节点为master。原创 2024-06-23 09:45:10 · 1044 阅读 · 0 评论 -
elasticsearch源码分析-01服务启动
1.服务启动服务启动入口类为Elasticsearch/*** Main entry point for starting elasticsearch*/public static void main(final String[] args) throws Exception { LogConfigurator.registerErrorListener(); final Elasticsearch elasticsearch = new Elasticsearch();原创 2024-06-15 14:36:17 · 992 阅读 · 0 评论