Elasticsearch之路由(routing)
路由 主要解决的是文档应该存储在哪个分片中 实际过程是根据公式计算出进行分配 1 # 路由哈希值 % 主分片的数量 2 shard = hash(routing) % number_of_primary_shards 3 # 路由默认值是文档的_id 自定义路由 1 PUT r1/doc/1?routing=user1 2 { 3 "title":"论母猪的产前保养" 4 } 5 PUT r1/doc/2?routing=user1 6 { 7 "title":"论母猪的产后护理" 8 } 这两篇文档都分配在一个分片上了 通过路由查询文档 GET r1/doc/1?routing=user1 # 结果如下 { "_index" : "r1", "_type" : "doc", "_id" : "1", "_version" : 3, "_routing" : "user1", "found" : true, "_source" : { "title" : "论母猪的产前保养" } } 通过路由值查找 1 GET r1/doc/_search 2 { 3 "query": { 4 "terms": { 5 "_routing":["user1"] 6 } 7 } 8 } 9 # 结果如下 10 { 11 "took" : 0, 12 "timed_out" : false