当前位置: 首页 > news >正文

Logstash 迁移索引元数据(设置和映射)

https://help.aliyun.com/zh/es/use-cases/use-logstash-to-migrate-full-or-incremental-data-from-self-managed-elasticsearch-to-alibaba-cloud-elasticsearch

在进行数据迁移时,Logstash会帮助您自动创建索引,但是自动创建的索引可能与您待迁移的索引存在差异,导致迁移前后数据的格式不一致。因此建议您在数据迁移前,在阿里云Elasticsearch中手动创建目标索引,确保迁移前后索引数据完全一致。

您可以通过Python脚本创建目标索引,具体操作步骤如下:

适配 Python 3.10.9

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:indiceCreate.py
import base64
import http.client
import json## 源集群host。
oldClusterHost = "localhost:9200"
## 源集群用户名,可为空。
oldClusterUserName = "elastic"
## 源集群密码,可为空。
oldClusterPassword = "xxxxxx"
## 目标集群host,可在阿里云Elasticsearch实例的基本信息页面获取。
newClusterHost = "jiankunking****.elasticsearch.aliyuncs.com:9200"
## 目标集群用户名。
newClusterUser = "elastic"
## 目标集群密码。
newClusterPassword = "xxxxxx"
DEFAULT_REPLICAS = 0def httpRequest(method, host, endpoint, params="", username="", password=""):conn = http.client.HTTPConnection(host)headers = {}if (username != ""):'Hello {name}, your age is {age} !'.format(name='Tom', age='20')up = ('{username}:{password}'.format(username=username, password=password))# print(up)# print(up.encode())# base64string = base64.encodestring(#     up.encode()).replace('\n', '')base64string = base64.b64encode(up.encode()).decode()print(base64string)headers["Authorization"] = "Basic %s" % base64string;if "GET" == method:headers["Content-Type"] = "application/x-www-form-urlencoded"conn.request(method=method, url=endpoint, headers=headers)else:headers["Content-Type"] = "application/json"conn.request(method=method, url=endpoint, body=params, headers=headers)response = conn.getresponse()res = response.read()return resdef httpGet(host, endpoint, username="", password=""):return httpRequest("GET", host, endpoint, "", username, password)def httpPost(host, endpoint, params, username="", password=""):return httpRequest("POST", host, endpoint, params, username, password)def httpPut(host, endpoint, params, username="", password=""):return httpRequest("PUT", host, endpoint, params, username, password)def getIndices(host, username="", password=""):endpoint = "/_cat/indices"indicesResult = httpGet(oldClusterHost, endpoint, oldClusterUserName, oldClusterPassword)indicesList = indicesResult.decode().split("\n")indexList = []for indices in indicesList:if (indices.find("open") > 0):indexList.append(indices.split()[2])return indexListdef getSettings(index, host, username="", password=""):endpoint = "/" + index + "/_settings"indexSettings = httpGet(host, endpoint, username, password)print(index + "  原始settings如下:\n" + indexSettings.decode())settingsDict = json.loads(indexSettings)## 分片数默认和源集群索引保持一致。number_of_shards = settingsDict[index]["settings"]["index"]["number_of_shards"]## 副本数默认为0。number_of_replicas = DEFAULT_REPLICASnewSetting = "\"settings\": {\"number_of_shards\": %s, \"number_of_replicas\": %s}" % (number_of_shards, number_of_replicas)return newSettingdef getMapping(index, host, username="", password=""):endpoint = "/" + index + "/_mapping"indexMapping = httpGet(host, endpoint, username, password)print(index + " 原始mapping如下:\n" + indexMapping.decode())mappingDict = json.loads(indexMapping)mappings = json.dumps(mappingDict[index]["mappings"])newMapping = "\"mappings\" : " + mappingsreturn newMappingdef createIndexStatement(oldIndexName):settingStr = getSettings(oldIndexName, oldClusterHost, oldClusterUserName, oldClusterPassword)mappingStr = getMapping(oldIndexName, oldClusterHost, oldClusterUserName, oldClusterPassword)createstatement = "{\n" + str(settingStr) + ",\n" + str(mappingStr) + "\n}"return createstatementdef createIndex(oldIndexName, newIndexName=""):if (newIndexName == ""):newIndexName = oldIndexNamecreatestatement = createIndexStatement(oldIndexName)print("新索引 " + newIndexName + " 的setting和mapping如下:\n" + createstatement)endpoint = "/" + newIndexNamecreateResult = httpPut(newClusterHost, endpoint, createstatement, newClusterUser, newClusterPassword)print("新索引 " + newIndexName + " 创建结果:" + createResult.decode())## main
indexList = getIndices(oldClusterHost, oldClusterUserName, oldClusterPassword)
systemIndex = []
for index in indexList:if (index.startswith(".")):systemIndex.append(index)else:createIndex(index, index)
if (len(systemIndex) > 0):for index in systemIndex:print(index + " 或许是系统索引,不会重新创建,如有需要,请单独处理~")

相关文章:

Logstash 迁移索引元数据(设置和映射)

https://help.aliyun.com/zh/es/use-cases/use-logstash-to-migrate-full-or-incremental-data-from-self-managed-elasticsearch-to-alibaba-cloud-elasticsearch 在进行数据迁移时,Logstash会帮助您自动创建索引,但是自动创建的索引可能与您待迁移的索…...

用python将pdf转成图片转换成对应的word文件

*科管系统**报告只能上传word,但是有些盖章文件只有pdf版本,因此有这个需求,目前市面上没这软件,只能自己python写一个。 要将PDF中的页面以图片的形式存储到Word文档中,你需要完成以下几个步骤: 从PDF中…...

list(c++)

list介绍 list是STL容器中的容器,且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表,其优势是在任意位置插入和删除元素的时间复杂度为O(1),但无法通过“下标[ ]”直接访问元素,需要通过从头(尾&#…...

51单片机STC8G串口Uart配置

测试环境 单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试; IDE:KEIL C51; 寄存器配置及主要代码 STC8G系列单片机具有4个全双工异步串行通信接口;本文以串口1为例,串口1有4种工作方式…...

uni-app使用movable-area 实现数据的拖拽排序功能

文档地址 template部分 <movable-area :style"getAreaStyle"><movable-view class"table-row" v-for"v,i in move.list":key"v.id":y"v.y"change"handle_moving"direction"vertical"touchst…...

如何设置使PPT的画的图片导出变清晰

PPT画的流程图另存为图片 插入WORD不清晰的解决办法&#xff1a; 第一步&#xff1a;先调整PPT分辨率 根据此链接修改PPT默认的导出dpi 第二步&#xff1a;新建PPT准备 首先看想要保存的图的尺寸&#xff1a;点击图形-格式-长宽 新建一个ppt-设计-幻灯片大小-自定义大小 …...

和鲸科技 CEO 范向伟受邀揭牌启动南京大学 2024 级大学生人工智能素养大赛

2024 年 10 月 26 日&#xff0c;南京大学第十九届读书节在仙林校区图书馆举行开幕仪式。中国科学院院士、南京大学校长谈哲敏&#xff0c;校党委常委、副校长索文斌&#xff0c;原副校长、关工委主任闵铁军出席仪式&#xff0c;南京大学相关学院和职能部处负责人&#xff0c;以…...

NewStarCTF2024-Week4-Web-WP

目录 1、blindsql2 2、chocolate 3、隐藏的密码 4、ezcmsss 题目对勇师傅来说已经是开始上难度了所以这周没有AK 分享下自己做出来的题的解题思路 1、blindsql2 原本是在继续构造新的 payload&#xff0c;也测到了延时 打算去改上周的脚本&#xff0c;结果去跑的时候忘了将…...

Java学习Day56:暴打舔狗!(SpringBoot)

1.springboot简介 核心能力&#xff1a;Spring容器、日志、自动配置AutoCongfiguration、Starters web应用的能力&#xff1a;MVC、嵌入式Web服务器 数据访问(持久化)&#xff1a;关系型数据库、非关系型数据库 强大的整合其他技术的能力 只要是Java中牛逼的技术&#xff0c…...

RSA加密算法实现

Java实现RSA加密算法示例,包括密钥对的生成、加密和解密过程。首先需要导入Java的加密库,这些功能主要通过java.security和javax.crypto包提供。先生成了一个RSA密钥对,包括一个公钥和一个私钥。然后使用公钥加密了一个字符串,并使用私钥解密了加密后的字符串。加密和解密的…...

大数据新视界 -- 大数据大厂之优化大数据计算框架 Tez 的实践指南

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

java 中 List<T> 类型数据在 postgreSql 数据库中存储

一 属性添加注解 在类上面添加注解&#xff1a; TableName(autoResultMap true) 在字段上面添加注解&#xff1a; TableField(value "list", typeHandler UserHandler.class) private List<User> list new ArrayList<>(); 二 创建 UserHandler 类…...

公共命名空间,2024年10月的笔记

首先&#xff0c;我国选择C做为竞赛语言&#xff0c;许多人学C&#xff0c;学习的结果是&#xff1a;看到“公共命名空间”&#xff0c;就幻想出一个私有命名空间&#xff0c;其实&#xff0c;公共命名空间和C的命名空间无关&#xff01; 超简源代码 已知序列v{1,2,3,4,5}&…...

frida脚本,自动化寻址JNI方法

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 1. 通过 ArtMethod 结构体找到 jni 方法在内存中的地址&#xff0c;并把寻址方法通过 rpc.exports 暴露给 Python 脚本调用 jni_addr.js let entry_point_fr…...

‌MySQL中‌between and的基本用法‌

文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段&#xff0c;包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…...

Ceph 存储系统全解

1. 引言 什么是 Ceph&#xff1f; Ceph 是一个开源的分布式存储系统&#xff0c;旨在提供高性能、可扩展、无单点故障的统一存储平台。它可以同时支持对象存储、块存储和文件系统存储&#xff0c;能够满足不同存储需求的多种应用场景。Ceph 通过其强大的 RADOS&#xff08;可…...

C# ftp帮助类 项目实战优化版

上位机开发中有时要与客户的文件服务器进行数据交互。如Mapping文件下载。结果文件上传等。我在项目中就常用到。现在把项目实战代码进行分享一下。 功能列表&#xff1a;连接服务器&#xff0c;下载文件&#xff0c;上传文件&#xff0c;删除服务器文件&#xff0c;获取当前目…...

栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)

20. 有效的括号 判断左右括号是否匹配&#xff0c;匹配返回true&#xff0c;不匹配返回false 通过栈来实现&#xff0c;类型和顺序&#xff0c;数量都要匹配 控制数量通过size 每个右括号都要找最近的左括号去判断类型匹配不匹配&#xff0c;顺序匹配不匹配 最后来判断数量匹配…...

云原生后端开发教程

云原生后端开发教程 引言 随着云计算的普及&#xff0c;云原生架构逐渐成为现代软件开发的主流。云原生不仅仅是将应用部署到云上&#xff0c;而是一种构建和运行应用的方式&#xff0c;充分利用云计算的弹性和灵活性。本文将深入探讨云原生后端开发的核心概念、工具和实践&a…...

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next&#xff0c;next Browse&#xf…...

AI辅助开发工作流:用免费代理优化付费工具,提升代码生成效率

1. 项目概述&#xff1a;用免费AI代理优化付费AI工具的开发工作流如果你和我一样&#xff0c;订阅了Claude Pro或者GitHub Copilot&#xff0c;但每个月看着额度条飞速见底&#xff0c;心里总有点发慌&#xff0c;那这篇文章就是为你准备的。我们不是在讨论哪个AI写代码更强&am…...

联邦学习与RAG融合:构建隐私保护的分布式智能问答系统

1. 项目概述&#xff1a;当联邦学习遇上检索增强生成最近在折腾一个挺有意思的开源项目&#xff0c;叫fed-rag&#xff0c;来自 Vector Institute。光看名字&#xff0c;老司机们大概就能猜出个七七八八了&#xff1a;这玩意儿是把联邦学习和检索增强生成给揉到一块儿去了。我花…...

基于GitHub Webhook的自动化协作平台:Octopal架构设计与实现

1. 项目概述&#xff1a;一个面向开发者的开源协作平台最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“pmbstyle/Octopal”。光看名字&#xff0c;你可能会联想到“Octopus”&#xff08;章鱼&#xff09;和“GitHub”&#xff08;其吉祥物是章鱼猫Octocat&#xff09;&…...

从用户体验出发:手把手教你用uniapp的showLoading/showToast/showModal设计友好交互

从用户体验出发&#xff1a;手把手教你用uniapp的showLoading/showToast/showModal设计友好交互 在移动应用开发中&#xff0c;交互设计的好坏直接影响用户留存率。数据显示&#xff0c;超过60%的用户会因为糟糕的交互体验而卸载应用。作为开发者&#xff0c;我们不仅要关注功能…...

基于 4SAPI 的 API 网关智能监控与故障诊断系统:MTTR 降低 90%,系统可用性提升至 99.99%

前言 在微服务架构盛行的今天&#xff0c;API 网关已经成为企业系统的核心入口&#xff0c;承担着流量路由、负载均衡、认证授权、限流熔断等关键功能。API 网关的稳定性直接决定了整个系统的可用性。但传统的 API 网关监控模式已经难以满足现代企业的需求&#xff1a; 告警风…...

长沙定制开发本地生活APP打造城市便民消费场景

随着长沙城市发展&#xff0c;市民对便民消费的需求越来越高&#xff0c;长沙本地生活APP定制开发也逐渐成为本地商家、政企单位布局数字化的重要选择。不同于通用模板APP&#xff0c;长沙定制本地生活APP可根据长沙本地特色&#xff0c;整合餐饮、生鲜、家政、休闲娱乐、政务便…...

Anthropic新模型Mythos号称擅查漏洞,扫描curl代码却仅确认1个低危问题

Mythos高调亮相&#xff0c;扫描结果却令人意外 近期&#xff0c;Anthropic推出的AI安全分析模型Mythos引发广泛关注&#xff0c;该公司宣称其在发现源代码安全漏洞方面表现出色&#xff0c;甚至因此暂缓公开发布。然而&#xff0c;当Mythos扫描全球最广泛使用的开源命令行HTTP…...

告别SVN提交冲突!手把手教你配置TortoiseSVN 1.10.5的忽略列表与清理功能

告别SVN提交冲突&#xff01;手把手教你配置TortoiseSVN 1.10.5的忽略列表与清理功能 团队协作开发中&#xff0c;版本控制系统是必不可少的工具。Subversion&#xff08;SVN&#xff09;作为一款经典的集中式版本控制系统&#xff0c;至今仍在许多项目中发挥着重要作用。然而&…...

在Taotoken模型广场中根据任务与预算选择合适的模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Taotoken模型广场中根据任务与预算选择合适的模型 当开发者需要将大模型能力集成到自己的应用或工作流中时&#xff0c;面对市场…...

3步构建你的第二大脑:Obsidian知识管理系统实战指南

3步构建你的第二大脑&#xff1a;Obsidian知识管理系统实战指南 【免费下载链接】obsidian-template Starter templates for Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-template 你是否曾为笔记杂乱无章而烦恼&#xff1f;是否在需要某个知识点时…...