es指定分片以及分片副本数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es指定分片以及分片副本数相关的知识,希望对你有一定的参考价值。
参考技术A控制Elasticsearch分片和副本的分配
生产情景:比如生产环境有三个索引分别为 man、woman、katoey希望达到的效果: man索引放置在一些集群节点上 woman索引又单独放置到集群的另外一些集群节点上 katoey索引希望放置在所有放置man索引和woman索引的集群节点上 这么做是因为katoey索引比其他两个索引小很多,因此我们可以将它和其他两个索引一起分配。但是基于ES默认算法的处理方法,我们不能确定分片和副本的存放位置,但是ES允许我们对其做相应的控制!
1、指定节点的参数
**索引创建**** **当所有节点配置文件属性配置完成后,我们就可以根据空间名称,我们就可以创建索引放到指定的空间。 首先我们运行如下命令,来创建man索引:# curl -XPOST " http://ElasticSearchnode:9200/man\'
**2、分配时排除节点**** **跟我们上面操作为索引指定放置节点位置一样,我们也可以在索引分配的时候排除某些节点。参照之前的例子,我们新建一个people索引,但是不希望people索引放置到zone_one的ES集群节点服务器上,我们可以运行如下命令操作:# curl -XPOST " http://ElasticSearchcode:9200/people "
** 请注意,**在这里我们使用的是 index.routing.allocation.exclude.zone 属性而不是 index.routing.allocation.include.zone 属性。 **使用IP地址进行分配配置**** **除了在节点的配置中添加一些特殊的属性参数外,我们还可以使用IP地址来指定你将分片和副本分配或者不分配到哪些节点上面。为了做到这点,我们应该使用_ip属性,把zone换成_ip就好了。例如我们希望lucky索引分配到IP地址为10.0.1.110和10.0.1.119的节点上,我们可以运行如下命令设置:# curl -XPOST " http://ElasticSearchnode:9200/lucky "
二、集群范围内分配
** ** 除了索引层面指定分配或者排除分配之外(上面我们所做的都是这两种情况),我们还可以指定集群中所有索引的分配。例如,我们希望将所有的新索引分配到IP地址为10.0.1.112和10.0.1.114的节点上,我们可以运行如下命令设置:# curl -XPUT " http://ElasticSearchnode:9200/_cluster/settings " -d \' "transient" : "cluster.routing.allocation.include._ip" "10.0.1.112,10.0.1.114" \'
**移动分片**** **假设我们有两个节点:es_node_one和es_node_two,ElasticSearch在es_node_one节点上分配了ops索引的两个分片,我们现在希望将第二个分片移动到es_node_two节点上。可以如下操作实现:# curl -XPOST " http://ElasticSearchnode:9200/_cluster/reroute " -d \' "commands" : [ "move" : "index" : "ops", "shard" : 1, "from_node" : "es_node_one", "to_node" : "es_node_two" ] \'
**一次HTTP请求包含多个命令**** **我们可以在一次HTTP请求中包含多个命令,例如:# curl -XPOST " http://ElasticSearchnode:9200/_cluster/reroute " -d \' "commands" : [ "move" : "index" : "ops", "shard" : 1, "from_node" : "es_node_one", "to_node" : "es_node_two", "cancel" : "index" : "ops", "shard" : 0, "node" : "es_node_one" ] \'
以上是关于es指定分片以及分片副本数的主要内容,如果未能解决你的问题,请参考以下文章