栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

elasticsearch reindex api

elasticsearch reindex api

reindex api

reindex 介绍reindex 支持参数reindex 异步操作

reindex 介绍

Reindx API :支持把文档(query 指定文档,不指定则是全部)从一或多个索引(本地或远程)source导入到另外一个索引 dest

修改索引的主分片数,修改字段类型,集群内数据迁移/跨集群数据迁移可使用 reindex

reindex api 的注意事项:

_source必须是 enabled 对于 source index 的所有文档reindex 其 dest 无法拷贝 source 索引的settings和mappings,需要自己创建dest 索引再跑reindexreindex功能的底层实现原理是通过scroll方式实现的 reindex 支持参数

1.source

index:指定源数据索引库,支持[]指定多个索引库slice:并行化执行reindex操作,自动并行化需要请求后 _reindex?slices=5 增加 slicesmax_docs:reindex 文档的最大数量remote:数据源是远程es集群

跨集群 reindex
1. 修改 elasticsearch.yml 增加白名单 并且重启节点:
reindex.remote.whitelist: "otherhost:9200, another:9200, 127.0.10.*:9200, localhost:*"
	支持ip,端口号,通配符

2. _reindex 操作
POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "username": "user",  # 没有登录验证可不填
      "password": "pass"
    },
    "index": "source",
    "query": {   # 匹配 source 中指定查询语句的文档导出
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {  # 导入到 dest 索引
    "index": "dest"
  }
}

query:匹配 source 中指定查询语句的文档导出sort:支持 source 的文档排序导出,配合 size_source:支持 source 的文档只导出指定字段

2.dest

op_type:默认不生效

"op_type": "create"  # 文档若已经存在会导致版本冲突, _reindex 只会创建不存在的文档
# Reindx API,version Type Internal
POST  _reindex
{
  "source": {
    "index": "blogs"
  },
  "dest": {
    "index": "blogs_fix",
    "op_type": "create"
  }
}

version_type:默认不生效,等同 internal,设置 external 根据外部版本判断,此时执行会把source的version覆盖到dest的version

internal 忽略版本 source 的文档直接覆盖 dest 的文档
external 根据 source 的版本和 dest 的版本判断是否覆盖 dest 的文档,需要source的版本大于dest相同文档的版本才能覆盖,新文档的version为两个源的最高版本,多用于二次导入,增加遗漏的文档
external_gte 大于等于
external_gt 大于

routing:可更改导入文档的路由分片信息,值:keep 保留原文档的路由信息,discard 丢弃原文档的路由信息默认_id路由分片,= 指定新的路由信息

POST _reindex
{
  "source": {
    "index": "source",
    "query": {
      "match": {
        "company": "cat"
      }
    }
  },
  "dest": {
    "index": "dest",
    "routing": "=cat"   # 所有路由指定为cat
  }
}

pipeline:Reindex can also use the Ingest node feature by specifying a pipeline, dest 可指定 pipeline 使用节点预处理功能

POST _reindex
{
  "source": {
    "index": "source"
  },
  "dest": {
    "index": "dest",
    "pipeline": "some_ingest_pipeline"
  }
}

3.conflicts:默认,版本冲突会中断 _reindex 进程,指定 proceed 则版本冲突不会中断,会返回冲突数量

POST _reindex
{
  "conflicts": "proceed",  # 加上则不会冲突中断
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "op_type": "create"
  }
}

4.size:限制从source导出的符合条件的文档数量

5.script:支持脚本操作,对导出的文档做二次加工再导入

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "external"
  },
  # This example bumps the version of the source document
  "script": {
    "source": "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
    "lang": "painless"
  }
}
# 支持将 source 的flag字段映射到 dest 的tag
POST _reindex
{
  "source": {
    "index": "test"
  },
  "dest": {
    "index": "test2"
  },
  "script": {
    "source": "ctx._source.tag = ctx._source.remove("flag")"  # 令tag=flag,删除flag字段
  }
}
reindex 异步操作

reindex api 支持异步操作,执行只返回 task id

POST _reindex?wait_for_completion=false
查看task
GET _tasks?detailed=true&actions=*reindex
查看指定task
GET /_tasks/r1A2WoRbTwKZ516z6NEs5A:36619
取消task
POST _tasks/r1A2WoRbTwKZ516z6NEs5A:36619/_cancel
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761671.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号