elasticsearch Elasticsearch-使用新索引名的模式重新索引整个集群
我有一个包含数千个索引的索引,每个索引有5个碎片。 我想用每个索引只有1个碎片来重新索引它们
elasticsearch Elasticsearch-使用新索引名的模式重新索引整个集群,
elasticsearch,
elasticsearch,我有一个包含数千个索引的索引,每个索引有5个碎片。 我想用每个索引只有1个碎片来重新索引它们 Elastic中是否有内置解决方案,例如通过在每个索引中添加“-reindexed”来重新索引所有索引?看起来您希望在重新索引时动态更改索引名称 让我们用一个例子来理解这一点: 1) 添加一些索引: POST sample/_doc/1 { "test" : "sample" } POST sample1/_doc/1 { "test" : "sample" } POST sample2/_
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的模板结合起来,这样应该可以工作。如果你还需要帮助,请告诉我:)谢谢。我主要是寻找一个内置的解决方案,没有一个脚本循环。谢谢。我主要是寻找一个内置的解决方案,没有一个脚本循环。