elasticsearch Elasticsearch-使用新索引名的模式重新索引整个集群,elasticsearch,elasticsearch" /> elasticsearch Elasticsearch-使用新索引名的模式重新索引整个集群,elasticsearch,elasticsearch" />

elasticsearch Elasticsearch-使用新索引名的模式重新索引整个集群

elasticsearch Elasticsearch-使用新索引名的模式重新索引整个集群,elasticsearch,elasticsearch,我有一个包含数千个索引的索引,每个索引有5个碎片。 我想用每个索引只有1个碎片来重新索引它们 Elastic中是否有内置解决方案,例如通过在每个索引中添加“-reindexed”来重新索引所有索引?看起来您希望在重新索引时动态更改索引名称 让我们用一个例子来理解这一点: 1) 添加一些索引: POST sample/_doc/1 { "test" : "sample" } POST sample1/_doc/1 { "test" : "sample" } POST sample2/_

我有一个包含数千个索引的索引,每个索引有5个碎片。 我想用每个索引只有1个碎片来重新索引它们


Elastic中是否有内置解决方案,例如通过在每个索引中添加“-reindexed”来重新索引所有索引?

看起来您希望在重新索引时动态更改索引名称

让我们用一个例子来理解这一点:

1) 添加一些索引:

POST sample/_doc/1
{
  "test" : "sample"
}

POST sample1/_doc/1
{
  "test" : "sample"
}

POST sample2/_doc/1
{
  "test" : "sample"
}
POST _reindex
{
  "source": {
    "index": "sample*"
  },
  "dest": {
    "index": ""
  },
  "script": {
    "inline": "ctx._index = ctx._index + '-reindexed'"
  }
}
2) 用于在为多个索引重新编制索引时动态更改索引名称:

POST sample/_doc/1
{
  "test" : "sample"
}

POST sample1/_doc/1
{
  "test" : "sample"
}

POST sample2/_doc/1
{
  "test" : "sample"
}
POST _reindex
{
  "source": {
    "index": "sample*"
  },
  "dest": {
    "index": ""
  },
  "script": {
    "inline": "ctx._index = ctx._index + '-reindexed'"
  }
}
上述请求将重新索引所有以sample开头的索引,并在索引名中添加-reindexed。因此,这意味着样本样本1样本2将重新编制索引,作为样本重新编制索引样本1重新编制索引样本2重新编制索引,所有这些都需要一个请求

为了使用一个碎片设置目标索引,您需要 在重新编制索引之前创建这些索引


希望有帮助

看起来您希望在重新编制索引时动态更改索引名

让我们用一个例子来理解这一点:

1) 添加一些索引:

POST sample/_doc/1
{
  "test" : "sample"
}

POST sample1/_doc/1
{
  "test" : "sample"
}

POST sample2/_doc/1
{
  "test" : "sample"
}
POST _reindex
{
  "source": {
    "index": "sample*"
  },
  "dest": {
    "index": ""
  },
  "script": {
    "inline": "ctx._index = ctx._index + '-reindexed'"
  }
}
2) 用于在为多个索引重新编制索引时动态更改索引名称:

POST sample/_doc/1
{
  "test" : "sample"
}

POST sample1/_doc/1
{
  "test" : "sample"
}

POST sample2/_doc/1
{
  "test" : "sample"
}
POST _reindex
{
  "source": {
    "index": "sample*"
  },
  "dest": {
    "index": ""
  },
  "script": {
    "inline": "ctx._index = ctx._index + '-reindexed'"
  }
}
上述请求将重新索引所有以sample开头的索引,并在索引名中添加-reindexed。因此,这意味着样本样本1样本2将重新编制索引,作为样本重新编制索引样本1重新编制索引样本2重新编制索引,所有这些都需要一个请求

为了使用一个碎片设置目标索引,您需要 在重新编制索引之前创建这些索引


希望有帮助

您可以执行一个简单的
重新索引
,但我还建议您查看
收缩索引
API:

上面的文档链接到v7.0,但这已经存在很多次了

在您的示例中,您将执行以下类似操作:

首先,将所有主碎片或副本碎片的副本重新分配到单个节点,并在执行shrink操作时防止将来的任何写访问

PUT /my_source_index/_settings
{
  "settings": {
    "index.routing.allocation.require._name": "shrink_node_name", 
    "index.blocks.write": true 
  }
}
启动收缩操作,清除上一个命令中设置的索引设置,并更新目标索引上的主设置和副本设置:

POST my_source_index/_shrink/my_target_index-reindexed
{
  "settings": {
    "index.routing.allocation.require._name": null, 
    "index.blocks.write": null,
    "index.number_of_replicas": 1,
    "index.number_of_shards": 1, 
    "index.codec": "best_compression"
  }
}
注意,上面还分配了一个副本碎片-如果不需要,请确保将其设置为0


您可能需要设置某种脚本来逐个迭代源索引列表。

您可以执行一个简单的
reindex
,但我还建议您查看
收缩索引的API:

上面的文档链接到v7.0,但这已经存在很多次了

在您的示例中,您将执行以下类似操作:

首先,将所有主碎片或副本碎片的副本重新分配到单个节点,并在执行shrink操作时防止将来的任何写访问

PUT /my_source_index/_settings
{
  "settings": {
    "index.routing.allocation.require._name": "shrink_node_name", 
    "index.blocks.write": true 
  }
}
启动收缩操作,清除上一个命令中设置的索引设置,并更新目标索引上的主设置和副本设置:

POST my_source_index/_shrink/my_target_index-reindexed
{
  "settings": {
    "index.routing.allocation.require._name": null, 
    "index.blocks.write": null,
    "index.number_of_replicas": 1,
    "index.number_of_shards": 1, 
    "index.codec": "best_compression"
  }
}
注意,上面还分配了一个副本碎片-如果不需要,请确保将其设置为0


您可能需要设置某种脚本来逐个迭代源索引列表。

谢谢,听起来不错。我将尝试将您的方法与shard=1的模板结合起来,这样应该可以工作。如果你还需要帮助,请告诉我:)谢谢,听起来不错。我将尝试将您的方法与shard=1的模板结合起来,这样应该可以工作。如果你还需要帮助,请告诉我:)谢谢。我主要是寻找一个内置的解决方案,没有一个脚本循环。谢谢。我主要是寻找一个内置的解决方案,没有一个脚本循环。