客户端访问es的过程如下:

(1)当用户发送一个请求到任意一个节点,该节点就会成为coordinating node(协调节点)

(2)协调节点,对document进行路由,将请求发送到对应的primary shard 上的node

      document路由过程:

    ①客户端增删改一个document时,会同步带过来一个routing number,默认情况下时document的_id(可手动指定,也可自东生成)

    ②node会将这个routing,传入到一个hash函数中,产出一个routing的hash值,然后将hash函数产生的值对index对应primary shard的数据取余。计算出最终的primary shard

       路由算法:shard = hash(routing) % number_of_primary_shards

    ③注意:routing的值可以进行指定,比如说put /index/type/id?routing=user_id,即可以将某一类的document路由到一个shard上去,在后续进行应用级别的负载均衡,可以提升批量读取数据的性能。

   

(3)实际的node将document写完成后,同步数据到对应的replica shard

(4)coordinating node,如果发现primary shard和对应的replica shard 数据执行完成后,就返回相应结果给客户端

 

注意:任意一个节点都知道任意一个document在哪个node上。

 

elasticsearch执行增删改document的内部原理

 

 

相关文章:

  • 2019-09-26
  • 2021-05-07
  • 2022-01-10
  • 2021-06-21
  • 2022-01-11
  • 2021-10-27
  • 2021-05-10
  • 2022-01-08
猜你喜欢
  • 2021-09-22
  • 2021-04-10
  • 2021-11-24
  • 2021-08-15
  • 2021-04-14
  • 2022-02-17
  • 2021-12-11
相关资源
相似解决方案