ES5源码分析
淡定一生2333
这个作者很懒,什么都没留下…
展开
-
ElasticSearch scroll查询原理
一、 ES搜索两阶段简介ES的搜索是分2个阶段进行的,即Query阶段和Fetch阶段。Query阶段比较轻量级,通过查询倒排索引,获取满足查询结果的文档ID列表。Fetch阶段比较重,需要将每个shard的结果取回,在协调结点进行全局排序。 通过From+size这种方式分批获取数据的时候,随着from加大,需要全局排序并丢弃的结果数量随之上升,性能越来越差。二、 scroll分析Scroll查询,先做轻量级的Query阶段以后,免去了繁重的全局排序过程。 它只是将查询结果集,也...转载 2020-09-27 22:12:11 · 4958 阅读 · 1 评论 -
ES数据写入流程介绍
今天被人问到了ES相关的问题,没有说上来。ES有段时间没用了,很多细节都忘了,幸好之前有看过一些源码,这里就整理下,写篇博客记录一下。 首先大致说下写索引的大概流程: primary分片是写索引的主入口,由它负责验证输入正确性,并负责将操作复制到其他副本。首先是根据document id, route到primary shard上执行。复制的时候不需要复制完全部的repl...原创 2020-03-28 21:35:09 · 7974 阅读 · 9 评论 -
ES启动流程分析
启动的代码的入口在Elasticsearch.java中的main()(暂时先忽略安全相关的部分)1.注册ErrorListener,用于在启动失败的时候报错2.启动ES命令行客户端EnvironmentAwareCommand和对应用来输入输入Terminal//和命令行相关的操作3.创建一个Setting(HashMap),放入一些ES配置(path.conf...原创 2018-05-13 14:43:49 · 1497 阅读 · 0 评论 -
Query查询流程源码简介
问题:1.客户端如何连接ES2.请求怎么发过去,是发到哪一个节点上3.创建客户端的时候,为什么要填上集群所有节点的地址? 为了分发用么?从PreBuiltTransportClientTests中的PreBuiltTransportClientTests开始看过去。这个是ES5.0.0之后新增加的一个客户端ES是使用netty来进行通信的,可以将netty理...原创 2018-05-13 14:45:02 · 923 阅读 · 0 评论 -
ES5.6.4源码编译
参考同目录下的<Intelj IDEA***>那篇文档1.下载JDK(1.8)和gradle(3.5),并配置环境变量2.在C:\Users\***\.gradle目录下放入init.gradle文件3.最后再ES源码的根目录下编译: gradle idea(如果报错,修改报错目录下的build.gradle文件: 只要修改url那个地方即可 buildscript { reposi...原创 2018-06-28 19:34:21 · 1160 阅读 · 1 评论 -
控制ES过滤与聚合起作用的顺序
先给出结论: ES在执行的时候,不是按照代码书写的顺序来执行的,而是按照API的规则来执行的。即setQuery和addAggregation在代码中的前后顺序是不影响结果的,ES会和普通的关系型数据库一样,先进行where再进行group by。 接着介绍下各种filter的作用: 1.setQuery(或者说filter):对搜索结果和aggregation都起作用...原创 2018-08-23 19:24:37 · 2661 阅读 · 0 评论