elasticsearch
文章平均质量分 94
thomas0yang
这个作者很懒,什么都没留下…
展开
-
elasticsearch源码分析之集群管理(一)
一、背景Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。本文主要介绍实现分布式搜索和分析的基础–存储,好的存储设计在根本上决定了查询的性能。es的存储本质上是采用了lucene全文索引,在其基础上实现了分布式功能。几个基本概念:Cluster:集群,一个或多个节点的集合,通过名字唯一标识Node:节点,组成集群的服原创 2016-08-11 21:29:04 · 5006 阅读 · 1 评论 -
elasticsearch源码分析之search查询(十一)
elasticsearch分布式查询的思路是scatter/gather思想,也是多数分布式查询的套路原创 2017-11-19 08:23:03 · 4310 阅读 · 0 评论 -
elasticsearch源码分析之分片分配(十)
分片是把索引数据切分成多个小的索引块,这些小的索引块能够分发到同一个集群中的不同节点。这个把shard分发到node的过程就是分片的分配。分配的原则是主要还是基于提高读写性能,实现负载均衡,备份恢复快。原创 2017-11-10 18:20:14 · 3167 阅读 · 1 评论 -
elasticsearch源码分析之集群服务(八)
elasticsearch是如何构建集群服务框架的呢?原创 2017-10-29 12:12:05 · 4508 阅读 · 0 评论 -
elasticsearch源码分析之客户端(三)
与es通信有三种protocol分别是node、http和transport;其实对于其他client而言最终都是使用的http;而java是可以使用node和transport的,node方式一般很少用,此处我们只讨论transport client,采用bulk方式。一、客户端初始化1.1生成settings对象代码很容易看懂,初始化了一些基本信息,生成sett原创 2016-08-12 10:16:02 · 4082 阅读 · 4 评论 -
elasticsearch源码分析之Transport(五)
一、基本介绍1.1概念介绍transport模块是es通信的基础模块,在elasticsearch中用的很广泛,比如集群node之间的通信、数据的传输、transport client方式的数据发送等等,只要数和通信、数据传输相关的都离不开transport模块的作用。transport模块分为LocalTransport和NettyTransport两种,在Transpo原创 2016-08-29 19:20:24 · 6530 阅读 · 3 评论 -
elasticsearch源码分析之Gateway(六)
一、es数据文件1.1文件目录1.2broker文件1.3node文件1.4ClusterState类二、Gateway写入(state文件的写入)三、Gateway恢复(state文件的读取)四、讨论附录一、es数据文件我们将探讨由es系统各个部分写入的目录文件,分别从broker(master)和node(data)的结构文件进行介绍,并给其一个简短说明。原创 2016-09-14 10:33:36 · 6238 阅读 · 0 评论 -
elasticsearch源码分析之discovery(七)
Discovery模块概述elasticsearch中的Discover模块,这个模块主要是发现模块负责发现集群中的节点,以及选取主节点。用作处理elasticsearch中的集群问题,是elasticsearch中比较复杂的一个模块。 discovery有几类:Azure discovery(类似于多播),它可作为插件使用。EC2 discovery,作为插件使用。Google Compu原创 2017-03-15 20:39:19 · 3862 阅读 · 1 评论 -
elasticsearch的Doc Values 和 Fielddata
DocValues什么是DocValues简单说明DocValues就是一个种列式的数据存储结构(docid、termvalues)。 倒排索引的优势在于查找包含某个项的文档,即通过Term查找对应的docid。term的倒排 Term Doc_1 Doc_2 Doc_3 brown X X dog X翻译 2017-03-30 10:11:48 · 11325 阅读 · 6 评论 -
elasticsearch源码分析之服务端(四)
一、服务端接收1.1接收消息1.2主要类UML图二、服务端处理2.1索引的处理2.2写入primary2.3refresh2.4flush上篇博客说明了客户端的情况,现在继续分析服务端都干了些啥,es是怎么把数据插进去的,此处以transport的bulk为入口来探究,对于单个document的发送就忽略了。一、服务端接收1.1接收消息原创 2016-08-19 17:56:00 · 9008 阅读 · 2 评论 -
生产环境elasticsearch的配置建议
以下主要来自官方文档,主要分为几块:硬件方面内存CPU硬盘网络其他常用注意操作系统较大的文件描述符设置MMap管理工具JVM虚拟机请不要调整JVM设置请不要修改垃圾收集器给lucene留下一半的内存空间不要超过32G避免过大的使用内存swapping是性能的死穴ES参数配置禁止调整线程池设置集群和节点名称设置路径设置minimum_master_nodes原创 2017-02-17 17:38:48 · 36106 阅读 · 4 评论 -
elasticsearch源码分析之启动过程(二)
最近开始广泛的使用elasticsearch,也开始写一些java代码了,为了提高java代码能力,也为了更加深入一点了解elasticsearch的内部运作机制,所以开始看一些elasticsearch的源码了。对于这种广受追捧的开源项目,细细品读一定会受益匪浅,所以我会尽可能地细分成很多部分,下面我们从启动过程开始!首先从main开始,从start脚本可以看出,从org.elastic转载 2016-08-11 21:21:55 · 4912 阅读 · 0 评论 -
elasticsearch源码分析之索引操作(九)
介绍es索引的基本操作功能(create、exist、delete),用来进一步细化es集群是如果工作的原创 2017-11-05 16:35:01 · 2922 阅读 · 0 评论