Elasticsearch模块功能之-路由(routing)

索引分片分配能够控制索引分片在节点上怎么分布,那对于具体的文档能否控制具体节点的分布呢?答案是可以,根据路由公式shard = hash(routing) % number_of_primary_shardsElasticsearch使用相同的routing参数来实现这个功能,但我们在创建索引时需如下进行配置:

 

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. "mappings":{  
  2.     "doc": {  
  3.         "_routing": {  
  4.             "required": true,  
  5.             "path":"_routing"  
  6.         },  
  7.         "properties": {  
  8.             "title": {  
  9.                 "type":"string"  
  10.             }  
  11.         }  
  12.     }  
  13. }  

 

如果我们想在建索引时将相关的文档存放到一个分片下就可以这样做:

 

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. curl- XPUT localhost: 9200 / documents / doc / 1 - d '  
  2. {  
  3.     "title": "Document No.1",  
  4.     "_routing":"A"  
  5. }'  
  6. curl- XPUT localhost: 9200 / documents / doc / 2 - d '  
  7. {  
  8.     "title": "Document No.1",  
  9.     "_routing":"A"  
  10. }'  
  11. curl- XPUT localhost: 9200 / documents / doc / 3 - d '  
  12. {  
  13.     "title": "Document No.1",  
  14.     "_routing":"B"  
  15. }'  

 

这样将id为1和2的文档将会存在统一个分片上去。

         既然索引文档的时候使用了路由,那么肯定得在查询的时候利用了,在查询的时候使用routing参数将使得查询更加高效,如下:

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. curl-XGET 'localhost:9200/documents/_search?pretty&q=*:*&routing=A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值