Reindex API 详解

Reindex API 详解 只要有使用到elasticsearch的场景,那么或多或少总是会遇到需要重构索引的情况。如果对reindex API不熟悉,那么在遇到重构的时候,必然事倍功半,效率低下,一整天都不开心。在开始讲解具体的API的时候,有一点必须知道,Reindex不会尝试设置目标索引。它不会复制源索引的设置。您应该在运行_reindex操作之前设置目标索引,包括设置映射,分片计数,
摘要由CSDN通过智能技术生成

Reindex API 详解

只要有使用到elasticsearch的场景,那么或多或少总是会遇到需要重构索引的情况。如果对reindex API不熟悉,那么在遇到重构的时候,必然事倍功半,效率低下,一整天都不开心。

在开始讲解具体的API的时候,有一点必须知道,Reindex不会尝试设置目标索引。它不会复制源索引的设置。您应该在运行_reindex操作之前设置目标索引,包括设置映射,分片计数,副本等。当然,最常见的做法不会是手动的设置索引。而是使用索引模版。只要索引模版的匹配形式可以匹配上源索引和目标索引,则我们不需要去考虑索引配置的问题,模版会为我们解决对应的问题。

另外,下文只针对5.x及以后版本。

基本操作

对于reindex API来说,最常见的,就是简单的把documents从一个index复制到另一个。下面的例子中,我们把twitter index的内容复制到new_twitter index中:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}

返回到结果如下:

{
  "took" : 147,
  "timed_out": false,
  "created": 120,
  "updated": 0,
  "deleted": 0,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1.0,
  "throttled_until_millis": 0,
  "total": 120,
  "failures" : [ ]
}

version_type

就像_update_by_query,_reindex会生成源索引的快照(snapshot),但它的目标必须是一个不同的索引,以便避免版本冲突。dest对象可以像index API一样进行配置,以乐观锁控制并发。像上面那样,不设置version_type或设置它将设置为internal。Elasticsearch将会直接将文档转储到dest中,覆盖任何发生的具有相同类型和id的document:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "internal"
  }
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值