删除分片分配过滤器

时间:2017-03-01 13:42:51

标签: elasticsearch

我设置了一个分片过滤器,如:

    PUT _cluster/settings
{
  "transient" : {
    "cluster.routing.allocation.exclude._name" : "node-1"
  }
}

如何删除或禁用此类设置?我尝试使用include,但后来我同时设置了过滤器 - 包含和排除。我可以设置类似"cluster.routing.allocation.exclude._name" : ""的内容。

但是也可以设置类似:include all节点的东西吗?

3 个答案:

答案 0 :(得分:5)

对于在Elasticsearch 5.x上运行的群集,您可以传递null值以重置设置。正如issue中所述,cluster level settings记录了这一点,但索引级别设置没有记录。

所以你可以这样做:

PUT _cluster/settings
{
   "transient" : {
       "cluster.routing.allocation.exclude._name" : null
   }
}

还有:

PUT test-index/_settings
{
  "index": {
    "routing": {
      "allocation": {
        "include": {
          "box_type": null
        },
        "exclude": {
          "box_type": null
        },
        "require": {
          "box_type": null
        },
        "total_shards_per_node": "2"
      }
    }
  }
}

答案 1 :(得分:3)

你试过吗

PUT _cluster/settings
{
  "transient" : {
    "cluster.routing.allocation.exclude._name" : ""
  }
}

听起来很愚蠢,但我认为这就是你在弹性搜索中取消东西的方式......

答案 2 :(得分:0)

要重置包含过滤器并包含所有节点,您必须同时使用这两个设置:

PUT _cluster/settings
{
  "transient" : {
    "cluster.routing.allocation.include._name" : ""
  }
}

PUT _cluster/settings
{
   "transient" : {
     "cluster.routing.allocation.exclude._name" : ""
   }
}