elasticsearch-code
文章平均质量分 78
2B铅笔水果橡皮
这个作者很懒,什么都没留下…
展开
-
elasticsearch源码分析---索引数据
跟正常的网络通信相似,es的client跟server是通过netty进行通信的,client封装各种request,通过netty发送给es的server。server解析收到的各类request,dispatch到对应的handler中进行处理。下面我们看一下索引一条数据设计到的代码调用。客户端当然就是发起请求的了:client.prepareIndex("index","type",原创 2015-01-27 17:40:20 · 1339 阅读 · 2 评论 -
elasticsearch源码解析---AllocationDecider
AllocationModule分为两个模块:ShardAllocatorModule和AllocationDecidersModule。这里主要关注后一个模块。AllocationDecidersModule有一系列AllocationDecider组成,每一个Decider就是一个分配策略。在AllocationDecidersModule中: add(SameS原创 2015-01-30 16:05:53 · 1770 阅读 · 0 评论 -
elasticsearch源码分析---threadpool模块
elasticsearch的线程池实现在org.elasticsearch.threadpool下。初始化过程中会加载以threadpool开头的配置项的配置信息,然后确定各个线程池的大小,默认情况下,会参照处理器个数进行设置: int availableProcessors = EsExecutors.boundedNumberOfProcessors(settings);原创 2015-01-18 11:06:37 · 1315 阅读 · 0 评论 -
elasticsearch源码分析---discovery模块
根据guice的注册绑定机制,discovery的绑定顺序是这样的:InternalNode中添加DiscoveryModule:modules.add(new DiscoveryModule(settings));DiscoveryModule中创建了LocalDiscoveryModule(不分析)或者ZenDiscoveryModule: public Iterable s原创 2014-12-23 11:35:08 · 2601 阅读 · 0 评论 -
elasticsearch源码分析--启动进程
es启动脚本是bin目录下的elasticsearch。其中需要加载一些环境变量,诸如ES_CLASSPATH JAVA_OPTS ES_JAVA_OPTS等。推荐设置ES_HEAP_SIZE的值,来这只es进程需要的内存(经验值为系统内存的一半以上),同时设置-p参数来指定pid文件的生成位置,在es关闭的时候会用到。脚本内容不再赘述,java主类位于org.elasticsearch.b原创 2014-12-22 16:15:11 · 1299 阅读 · 3 评论 -
elasticsearch源码分析--transport模块
在InternalNode中启动了transportservice,这个服务最终的实现是绑定到transport模块中的local transport或者netty transport。在transportservice中的doStart方法中: protected void doStart() throws ElasticsearchException { adapter原创 2015-01-21 11:49:07 · 1496 阅读 · 0 评论 -
elasticsearch源码分析---TransportClient
在es中存在两种形式的客户端,NodeClient和TransportClient。两者的主要区别在于是否加入集群。TransportClient是不会加入集群(作为集群的一个节点)。因此TransportClient跟NodeClient相比算是轻量级的。因为不加入集群,因此访问集群需要指定一个或者多个地址。客户端,顾名思义,就是作为调用的发起方,来向服务器请求数据。因此,我们执行的诸如索引、查原创 2015-04-13 22:03:05 · 3704 阅读 · 3 评论