- document路由算法:shard=hash(routing)%number_of_primary_shards 默认情况下routing默认使用的是_id,也可以在发送请求的时候手动指定(routing value),对应用级别的负载均衡是很有帮助的,对id值进行hash。
- document的增删改查内部实现原理:在主分区和复制分区都已经搞定之后然后向客户端发送客户端。
-
我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?
put /index/type/id?consistency=quorum 不满足的时候就会报超时退出one:要求我们这个写操作,只要有一个primary shard是active活跃可用的,就可以执行
all:要求我们这个写操作,必须所有的primary shard和replica shard都是活跃的,才可以执行这个写操作
quorum:默认的值,要求所有的shard中,必须是大部分的shard都是活跃的,可用的,才可以执行这个写操作 -
当发送请求的时候,该请求会选择任意的节点进行发送,然后对该节点进行路由操作找到指定的分区保存数据
-
当发送读请求的时候,也可以将请求转发到副本上,采用round-robin随机轮训的算法进行分配数据,尽量将读请求平均分配到每个分节点上保证负载均衡。建立索引的过程中可能doc还没有到replica中,就会返回结果找不到
-
GET /index/type/_search?timeout=10ms 获取多个索引下多个type所有的数据 对里面的参数进行说明.其中timeout参数是该查询所用的时间必须小于指定的时长,如果时间大于指定这个参数的话就会返回查询超时,这样做是有一个好的用户体验。
-
shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shard上去,当然了,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去。
elasticsearch3
最新推荐文章于 2022-02-15 21:55:55 发布