文章分类 - Elasticsearch
摘要:knn 插件原理 利用 Lucene的 Codec 扩展机制。Codec 可以理解为 Lucene 索引文件格式的一种协议,用户只要实现对应的写入/读取的业务流程,即可自定义正排、倒排、StoreFields 等不同索引的具体实现。包装扩展了Lucene 的 Latest Codec,当向量数据写入
阅读全文
摘要:getway模块用于集群元数据的存储以及重启时元数据的恢复,大致流程是 1、当master选举出来判断当前集群状态中元数据是否恢复,如果恢复的话跳过getway 否则的话 2、maste从个节点拉取元数据 3、判断各个节点的元数据中版本号最高的元数据最为最新元数据 (包括集群 和 索引) 4、确定之
阅读全文
摘要:Sequence Number 每次进行索引操作seqNum自增,主要用于恢复时选择需要恢复哪部分数据 Primary Term 每次主分片易主这个数会增加,主要目的是防止一个陈旧的主分片重新加入进来时进行脏数据的操作,如当一个主分片暂时 离开集群,离开前刚好在进行数据的操作,此时已经选择了新主分片
阅读全文
摘要:Es 恢复流程大体上分为 init index verify_index translog finalize done 6个阶段 恢复流程包括多个模块 getway: 读取集群 索引 元信息 然后更新 之后调用reroute allocation: 调用reroute后执行分片服务,分完片后更新集群
阅读全文
摘要:Es 的search流程 1、协调节点接收到search请求后封装查询request 2、从clusterMata中获取索引有多少分片 设置相关参数,循环发送到分片所在的节点 3、分片接收到meaasge后判断是否要走cache 4、不需要走cache的话交交给lucene去查,查询完滞后判断是否要
阅读全文
摘要:整体流程协调节点封装请求发送给对应的分片,如果在此分片失败找下一个分片,成功后封装结果返回给客户端 请求入口 RestGetAction @Override public RestChannelConsumer prepareRequest(final RestRequest request, fi
阅读全文
摘要:Es写索引包括协调节点流程和节点写索引的流程 协调节点主要做索引的预处理、检查、分发任务 节点执行完后发发送给主分片所在节点,该节点把response发送给协调节点,协调节点发送给用户 入口在TransportBulkAction的doExecute @Override protected void
阅读全文
摘要:实例化node后调用各个模块的 start方法,discovery模块调用startInitialJoin()->startNewThreadIfNotRunning()->innerJoinCluster() /** * the main function of a join thread. Th
阅读全文
摘要:es有丰富的插件差不多 可以满平时开发的需求,但出现奇葩需求的时候又不能完全满足,所以就需要自定义开发插件了 目前es有以下几种插件可以去自定义 Analysis Plugins 分析插件 Discovery Plugins 发现插件 Ingest Plugins 提取插件 增强每个节点的功能。 M
阅读全文
摘要:es的master选举机制是相当任性的也是最简单有效的,比较版本大小,排序,然后选第一个,是不是相当任性 整个选举过程 如果存活的master集合不为空,选举master机制 存活集合为空 master选举代码 compare方法
阅读全文
摘要:最近没什么事,就翻了翻es的源码,之前看过lucene的也简单看过solr的,给我最大的感受就是,写这些项目的人真是相当棒的,看人家的代码学到很多东西,es启动过程特别繁杂,所以就直接贴代码了,在代码里注释 es启动入口在booststrap包下elasticsearch.java,首先是添加了一个
阅读全文
摘要:首先下载 es6.0源码 ,另外下载一个es6.0的发行版本 在git上虽然显示是6.0 其实是6.0.2的版本所以在后续的安装中会跑一个异常 下载完之后 可以直接通过eclipse的gradle插件导入项目或者idea的gradle导入,当然也可以使用 gradle的命令 gradle eclip
阅读全文