1.GET /_cluster/health
返回值中的status 是咱们关注的html
1.shard = hash(routing) % number_of_primary_shards
下面将对这个公式每一个字段进行分析
shard 哪一个分片, 也就是分片id
routing 一个可变值,默认是文档的id
hash 一个哈希函数,对rounting字段进行哈希计算生成一个数字
number_of_primary_shards 主分片的数量,routing字段通过hash函数计算以后的值,将对 主分片的数量也就是 number_of_primary_shards 进行取与,以后获得的shard就是咱们文档所在的分片的位置
主分片和副分片如何交互
假设一个集群由三个节点组成。有一个索引,这个索引有两个主分片,每一个主分片有两个副分片,相同的分片的副本不会放在同一个节点上。
请求发送到集群任意节点,每一个节点都有能力处理请求。每一个节点都知道集群中任一文档的位置,因此能够将请求转发到需求节点上。
新建、索引和删除单个文档 时的流程
先向 node 1 来一个请求这个请求多是发送新建,索引或者删除文档等。
node 1 节点根据文档的_id 肯定文档属于分片0, 请求被转发到node3 节点
node 3 在主分片执行了请求,若是主分片执行成功了,它将请求转发给node1 和node 2 节点。当全部的副分片都执行成功,node 3 将协调节点报告成功,并向客户端报告完成
consistency 参数的值能够设为 one (只要主分片状态 ok 就容许执行写操做),all
node(必需要主分片和全部副本分片的状态没问题才容许执行_写_操做), 或
quorum 。默认值为 quorum , 即大多数的分片副本状态没问题就容许执行写操做
1.quorum = int( (primary + number_of_replicas) / 2 ) + 1
取回一个文档
能够从主分片或者任意副本分片检索文档
某个请求向node 1 发送获取请求 节点使用
节点使用节点文档_ID来肯定文档属于分片0, 分片0 的副本分片存在于全部的三个节点上,在这种状况下,他将请求转发到node 2
node 2 将文档返回给node 1 ,而后将文档返回给客户端
在每次处理读取请求时,协调结点在每次请求的时候都会轮训全部的副本片来达到负载均衡
局部更新文档
部分更新一个文档的步骤
客户端向node1 发送一个请求
它将请求转发到主分片这个文档所在的Node 3
node 3从主分片检索文档,修改_Source json ,而且尝试从新索引主分片的文档。若是文档被另外一个进程修改,他会重复步骤3 知道超过retry_on_conflict 次后放弃
node 3 成功更新文档,它将新版本的文档并行转发到node 1 和node 2 的副本分片,从新创建索引。全部副本分片都返回成功,node 3 向协调节点也返回成功,协调节点向客户端返回成功
update 操做也支持 新建索引的时的那些参数 routing 、 replication 、 consistency 和 timeout
多文档模式
mget 和 bulk API 的 模式相似于单文档模式。 协调节点知道每一个文档的位置,将多个文档分解成每一个文档的的多文档请求,而且将这些请求并行的转发到每一个参与节点中 。
使用 mget 取回多个文档

客户端向node 1 发送一个mget请求
node 1 向每一个分片构建多文档请求,并行的转发这些请求到托管在每一个所需的主分盘或者副分片的节点上一旦收到全部的额回复,node 1 构建响应并将其返回给客户端
使用 bulk 修改多个文档
一个bulk请求请求到node 1
node 1 为每一个节点建立一个批量请求,并将这些请求并行转发到每一个包含主分片的节点
主分片一个接一个按顺序执行每一个操做。当每一个操做成功时,主分片并行转发新文档(或删除)到副本分片,而后执行下一个操做。 一旦全部的副本分片报告全部操做成功,该节点将向协调节点报告成功,协调节点将这些响应收集整理并返回给客户端
搜索—–最基本的工具
ElastcSearch 的三个基本概念
映射 Mapping 描述数据在每一个字段是如何存储的
分析 Analysis 全文如何处理使之能够被搜索到
Query DSL ES中强大灵活的查询语言
空搜索
GET /_search 没有指定任何查询的搜索包括没有指定索引
1.**查询获取以后**
**查询获取以后**
2. 3. { 4. "took": 8, //请求耗费多少毫秒 5. "timed_out": false,//是否超时 6. "_shards": {//在查询中参与分片的总数,成功多少,失败多少 7. "total": 42,//总分片数 8. "successful": 42,//成功数 9. "skipped": 0,//跳过数 10. "failed": 0//失败数 11. }, 12. "hits": {//hits指返回的结果集 13. "total": 6184,//总文档数量 14. "max_score": 1, 15. "hits": [ 16. { 17. "_index": ".kibana", //索引名称 18. "_type": "config",//索引type 19. "_id": "5.6.3",//文档在这个索引下的id 20. "_score": 1,//索引得分,是查询后的计算得来的 21. "_source": { 22. "buildNum": 15554 23. } 24. },
xxxxxxxxxxxxxxxxxx
json