使用已有的索引,复制得到一个索引。

关闭testindex_001的写入操作,命令样例如下:

curl -X PUT "https://localhost:9200/testindex_001/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"index.blocks.write": true
}
}
' --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

通过复制testindex_001来创建新的index,命令样例如下:

curl -X POST "https://localhost:9200/testindex_001/_clone/cloned-testindex_001?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

{
"acknowledged" : true
}

或者使用PUT方法,命令样例如下:

curl -X PUT "https://localhost:9200/testindex_001/_clone/cloned-testindex_002?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "cloned-testindex_002"
}

假如复制前没有关闭写入,复制操作将失败,提示信息,样例如下:

{
"error" : {
"root_cause" : [
{
"type" : "illegal_state_exception",
"reason" : "index testindex_001 must be read-only to resize index. use \"index.blocks.write=true\""
}
],
"type" : "illegal_state_exception",
"reason" : "index testindex_001 must be read-only to resize index. use \"index.blocks.write=true\""
},
"status" : 500
}

恢复testindex_001的写入操作,命令样例如下:

curl -X PUT "https://localhost:9200/testindex_001/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"index.blocks.write": false
}
}
' --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

{
"acknowledged" : true
}

实现原理

复制的操作过程:

  • 依据源索引的参数和数据,使用目标索引的名称,创建一个新的索引对象。
  • 将源索引相关的segment的对象和文件,关联至目标索引。
    • 假如节点的运行平台的文件系统支持POSIX语义中的硬链接,则使用硬链接方式。
    • 假如节点的运行平台的文件系统不支持POSIX语义中的硬链接,则使用复制方式,相对要耗时,同时占用存储空间。
  • 更新目标索引的状态,类似关闭后重新打开的索引。

约束项:

  • 目标索引的名称需要符合命名规范。
  • 目标索引不存在存在,否则复制操作将失败。
  • 目标索引和源索引,主分片的数量需要一致。
  • 参与复制操作的节点,需要有充足的存储空间来容纳新的索引的分片和副本。

方法参数

参考Create index API

方法的请求消息体

参考Create index API

方法的响应消息体

参考Create index API

相关资料

ElasticSearch之Clone index API的更多相关文章

  1. Elasticsearch:Split index API - 把一个大的索引分拆成更多分片

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/108960950

  2. elasticsearch中常用的API

    elasticsearch中常用的API分类如下: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作,查看索引信息等 查看API: ...

  3. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

  4. Index API

    Index API 用于在指定索引中添加或更新类型化的JSON文档,使其成为可搜索的. 以下示例将JSON文档插入“twitter”索引中,类型名为“_doc”,ID为1: PUT twitter/_ ...

  5. elasticsearch6.7 05. Document APIs(2)Index API

    Single document APIs Index API Get API Delete API Update API Multi-document APIs Multi Get API Bulk ...

  6. Elasticsearch Java Rest Client API 整理总结 (一)——Document API

    目录 引言 概述 High REST Client 起步 兼容性 Java Doc 地址 Maven 配置 依赖 初始化 文档 API Index API GET API Exists API Del ...

  7. Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI

    目录 引言 Search APIs Search API Search Request 可选参数 使用 SearchSourceBuilder 构建查询条件 指定排序 高亮请求 聚合请求 建议请求 R ...

  8. ElasticSearch入门-搜索(java api)

    ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper; import java.util.Map; import net.sf.json ...

  9. Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries

    目录 上篇回顾 Building Queries 匹配所有的查询 全文查询 Full Text Queries 什么是全文查询? Match 全文查询 API 列表 基于词项的查询 Term Term ...

  10. ElasticSearch Index API && Mapping

    ElasticSearch  NEST Client 操作Index var indexName="twitter"; var deleteIndexResponse = clie ...

随机推荐

  1. Field 'xxxxxx' doesn't have a default value 错误的解决办法

    在写web项目的时候,出现 Field 'xxxxx' doesn't have a default value 这个错误,直接找到你的数据库,然后打开设计表,看下面自增递增是否勾选上了,如果没有勾上 ...

  2. Ubuntu 18.04安装RabbitMQ

    1.安装erlang语言环境 sudo apt install erlang-nox 2.更新Ubuntu 源 sudo apt update 3.安装RabbitMQ服务 sudo apt inst ...

  3. Solution Set -「ARC 113」

    「ARC 113A」A*B*C Link. 就是算 \(\sum_{i=1}^{k}\sum_{j=1}^{\lfloor\frac{k}{i}\rfloor}\lfloor\frac{k}{j\ti ...

  4. 【Python爬虫】使用代理ip进行网站爬取

    使用代理IP进行网站爬取可以有效地隐藏你的真实IP地址,让网站难以追踪你的访问行为.本文将介绍Python如何使用代理IP进行网站爬取的实现,包括代理IP的获取.代理IP的验证.以及如何把代理IP应用 ...

  5. Vue项目——尚品会

    1: 项目的初始化 环境要求:node + webpack + 淘宝镜像 初始化项目: vue create 项目名称 目录/文件分析: - node_modules文件夹:放置项目依赖的地方 - p ...

  6. Python+SVM

    # !/usr/bin/env python # encoding: utf-8 # SVM算法 支持向量机 from sklearn import svm import numpy as np fr ...

  7. Redis中的缓存雪崩、缓存击穿、缓存穿透问题

    1. 什么是缓存雪崩 当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题.缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机.尤 ...

  8. 使用Spring Integration接收TCP与UDP请求

    1. 简介 Spring Integration 是一个开源的项目,它是 Spring 生态系统的一部分,旨在简化企业集成(Enterprise Integration)的开发.它提供了一种构建消息驱 ...

  9. 基于Electron27+Vite4+React18搭建桌面端项目|electron多开窗口实践

    前段时间有分享一篇electron25+vite4搭建跨桌面端vue3应用实践.今天带来最新捣鼓的electron27+react18创建跨端程序.electron多开窗体(模拟QQ登录窗口切换主窗口 ...

  10. AtCoder Beginner Contest 321(ABC321)

    A. 321-like Checker 直接模拟. Code B. Cutoff 直接暴力枚举 \([0\sim100]\),每次把第 \(n\) 个数当作当前枚举的 \(i\),然后看看条件是否满足 ...