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

ElasticSearch不同环境同步索引数据

 目的:在生产环境把一个索引的数据同步到测试环境中

1、在生产环境导出json数据

curl -u "adims_user:xkR%cHwR5I9g"   -X GET "http://172.18.251.132:9200/unify_info_mb_sp_aggregatetb_0004/_search?scroll=1m"   -H 'Content-Type: application/json'   -d'{"size": 100000,"query": {"bool": {"must": [{ "term": { "categoryId": 30 }},{ "term": { "factoryType": "煤炭电厂" }},{ "term": { "isDelete": 0 }},{ "term": { "countryName": "中国" }}]}}}'   > initial_batch.json

2、利用python把导出的json数据转成bulk数据

python脚本convert_to_bulk_simple.py

import json
import sysdef convert_search_to_bulk(input_file, output_file, target_index):"""将ES查询结果转换为bulk格式"""with open(input_file, 'r', encoding='utf-8') as f:data = json.load(f)if 'hits' not in data or 'hits' not in data['hits']:print("错误: 不是有效的ES查询结果格式")return Falsehits = data['hits']['hits']print(f"找到 {len(hits)} 个文档")with open(output_file, 'w', encoding='utf-8') as f:for hit in hits:# action行action = {"index": {"_index": target_index, "_id": hit.get('_id')}}f.write(json.dumps(action) + '\n')# document行f.write(json.dumps(hit.get('_source', {})) + '\n')# 确保以换行符结尾f.write('\n')print(f"转换完成: {output_file}")return Trueif __name__ == "__main__":if len(sys.argv) != 4:print("使用方法: python convert_to_bulk_simple.py input.json output.json target_index")sys.exit(1)convert_search_to_bulk(sys.argv[1], sys.argv[2], sys.argv[3]) 

执行转换命令:

python convert_to_bulk_simple.py initial_batch2.json bulk_data.json unify_info_mb_sp_aggregatetb_0004

3、把转换的数据导入到测试环境

curl -u "adims_user:j0SMMmI+Rwfv"   -X POST "http://192.168.168.243:9200/_bulk"   -H "Content-Type: application/json"   --data-binary @bulk_data.json

4、导入前后查询数据量大小,验证是否导入成功

curl -u "adims_user:j0SMMmI+Rwfv"   -X GET "http://192.168.168.243:9200/unify_info_mb_sp_aggregatetb_0004/_count"

http://www.dtcms.com/a/333274.html

相关文章:

  • 20250815在荣品RD-RK3588-MID开发板的Android13下调通TP芯片FT8206
  • linux安装docker-compose
  • STM32在使用DMA发送和接收时的模式区别
  • 使用C# 高效实现 Word 文档内容查找与替换的6种方法
  • Java 调用 Python 脚本:实现 HelloWorld
  • 数据驱动测试提升自动化效率
  • 车辆减振器异响测试系统
  • [Pyro] 基础构件 | 随机性sample | 可学习参数param | 批量处理plate
  • find命令解读
  • 重塑工业设备制造格局:明远智睿 T113-i 的破局之道
  • 2025北京世界机器人大会:技术、场景、生态实现三重跃迁
  • ARM+OpenPLC 组合详解及经典示例
  • MySQL → SQL → DDL → 表操作 → 数据类型 知识链整理成一份系统的内容
  • 基于 ArcFace/ArcMargin 损失函数的深度特征学习高性能人脸识别解决方案
  • pandas中df.to _dict(orient=‘records‘)方法的作用和场景说明
  • 题解:CF2127D Root was Built by Love, Broken by Destiny
  • CUDA × JetPack 初学者全指南
  • Python工具箱系列(六十四)
  • go语言运算符·关系运算符
  • sql CURRENT_TIMESTAMP
  • 【DSP28335 事件驱动】唤醒沉睡的 CPU:外部中断 (XINT) 实战
  • java注释功能
  • ESP32-C3_TCP
  • Linux操作系统从入门到实战(二十二)命令行参数与环境变量
  • 信刻光盘摆渡系统案例——某省纪委
  • 微服务容错与监控体系设计
  • 生存主义:隐形异变 (Survivalist: Invisible Strain)免安装中文版
  • Leetcode 最小生成树系列(1)
  • 解决zabbix图片中文乱码
  • Mac(二)Homebrew 的安装和使用