1、routing参数的指定和计算原理
每个document存放在哪个shard上是由routing参数决定的,那这个参数的值是什么,ElasticSearch又是怎么通过该参数来确定存放在哪个shard上呢?
PUT /index/type/id?routing=user_id { "user_id":"M9472323048", "name":"zhangsan", "age":54 }
2、手动指定routing和自动routing的区别
routing的值默认为_id字段,_id可以保证在集群中唯一,但是有时候需要手动指定routing来优化后续的查询过程。因为routing确定,那就可以指定用哪个routing进行查询,缩减了目标结果集,减少了ElasticSearch集群的压力。
使用自动routing:
优点: 简单,可以很均衡的分配每个shard中的文档数量,做到负载均衡
缺点: 当查询一下复杂的数据时,需要到多个shard中查找,查询偏慢
使用手动routing:
优点: 查询时指定当初入库的routing进行查询,锁定shard,直达目标,查询速度快
缺点: 麻烦,要保证存储的均衡比较复杂