ES索引备份

news/2024/10/4 7:07:54/
#!/usr/bin/env python
# -*- coding:utf-8 -*-"""
/**************************************************************
**************************************************************/
获取ES中所有的文档数据
filename data_es.py
python3
"""import sys
import json
import requests# Python 3 默认字符串类型已经是Unicode,不需要设置默认编码host = "10.233.54.21"
port = 9200def dump_es_ids(scroll_name, scroll_id):"""循环发送请求获取所有es:return:"""url = f"http://{host}:{port}/_search/scroll"data = {"scroll": scroll_name,"scroll_id": scroll_id}header = {"Content-Type": "application/json"}response = requests.post(url, json=data, headers=header)response.raise_for_status()  # 检查HTTP请求是否成功return response.json()def get_scroll(size, scroll_name, index):"""获取第一批数据和scroll:return:"""url = f"http://{host}:{port}/{index}/_search?scroll={scroll_name}"data = {"size": size,"query": {"match_all": {}}}header = {"Content-Type": "application/json"}response = requests.post(url, json=data, headers=header)response.raise_for_status()  # 检查HTTP请求是否成功return response.json()def has_more(result_obj, index):"""查看是否还有更多数据:param result_obj::return:"""try:obj_list = result_obj["hits"]["hits"]if len(obj_list) > 0:print(f"[INFO] index {index} has more data")return Trueelse:return Falseexcept Exception as e:print(f"[ERROR] got error {e}")return Falsedef get_id_list(result_obj):"""从结果集中获取id列表:param result_obj::return:"""obj_list = result_obj["hits"]["hits"]id_list = [item["_source"] for item in obj_list]return id_listdef main():"""获取文档的所有id:return:"""index = sys.argv[1]out_file = sys.argv[2]scroll_name = "5m"size = 1000scroll_obj = get_scroll(size, scroll_name, index)scroll_id = scroll_obj["_scroll_id"]print(f"[INFO] scroll_id is {scroll_id}")result_obj = scroll_objcounter = 0with open(out_file, "w") as out:while has_more(result_obj, index):counter += len(result_obj["hits"]["hits"])result_obj_list = get_id_list(result_obj)print(f"[INFO] index {index} get data length {len(result_obj_list)}")result_obj = dump_es_ids(scroll_name, scroll_id)print(f"[INFO] index {index} list total length {len(result_obj_list)}")print(f"[INFO] index {index} now total logs {counter}")for obj in result_obj_list:out.write(f"{json.dumps(obj, ensure_ascii=False)}\n")if __name__ == '__main__':main()
host = "10.92.204.60" # 修改成对应elasticsearch-master svc的IP   ,  port = 9200
# 找到svc
kubectl get svc -n mpks | grep elasticsearch# 先查看全文索引(导出的索引需要跟rd和drd确认)
curl http://ELASTICSEARCH_MASTER_IP:9200/_cat/indices | grep "fulltext" 备份执行  curl http://10.233.54.21:9200/_cat/indices | grep "fulltext" | awk -F" " '{if($7>0)print $3}'|awk '{print "touch ",$1," && python3 data_es.py ",$1," ",$1 }' |bash

常见问题:未找到request库
# 方式1pip install request -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

#方式2  去官网下载https://pypi.org/project/requests/#files 然后到解压后的目录去执行:

python setup.py install

http://www.ppmy.cn/news/1534282.html

相关文章

React返回上一个页面,会重新挂载吗

在 React 中,当你使用 React Router 或其他导航方法返回到上一个页面时,默认情况下,返回的页面会重新挂载。也就是说,组件会重新执行它的生命周期方法(或钩子函数),例如 useEffect、useState 的…

PHP反序列化8(phar反序列化)

考点8&#xff1a;phar反序列化 <aside> &#x1f4a1; 使用条件 </aside> 文件上传时&#xff0c;不必要.phar后缀&#xff0c;文件上传不是难点&#xff01;&#xff01;&#xff01;&#xff08;phar伪协议自动解析成.phar文件&#xff09; phar文件本质上是…

【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。

【深度学习基础模型】液态状态机&#xff08;Liquid State Machines, LSM&#xff09;详细理解并附实现代码。 【深度学习基础模型】液态状态机&#xff08;Liquid State Machines, LSM&#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】液态状态机&#xff0…

Tiny Transformer:从零开始构建简化版Transformer模型

引言 自然语言处理&#xff08;NLP&#xff09;与计算机视觉&#xff08;CV&#xff09;有显著差异&#xff0c;各自任务的独特性决定了它们适用的模型架构。在CV中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;长期占据主导地位&#xff0c;而在NLP领域&#xff0c;循…

Nagle 算法:优化 TCP 网络中小数据包的传输

1. 前言 在网络通信中&#xff0c;TCP&#xff08;传输控制协议&#xff09;是最常用的协议之一&#xff0c;广泛应用于各种网络应用&#xff0c;如网页浏览、文件传输和在线游戏等。然而&#xff0c;随着互联网的普及&#xff0c;小数据包的频繁传输成为一个不容忽视的问题。…

mac配置python出现DataDirError: Valid PROJ data directory not found错误的解决

最近在利用python下载SWOT数据时出现以下的问题&#xff1a; import xarray as xr import s3fs import cartopy.crs as ccrs from matplotlib import pyplot as plt import earthaccess from earthaccess import Auth, DataCollections, DataGranules, Store import os os.env…

C++学习,信号处理

C信号处理&#xff0c;依赖于操作系统提供的API。信号处理主要用于响应外部事件&#xff0c;如中断信号&#xff08;如SIGINT, SIGTERM等&#xff09;&#xff0c;这些信号可以由操作系统、其他程序或用户生成。 在Unix-like系统&#xff08;如Linux和macOS&#xff09;中&…

three.js 通过着色器实现热力图效果

three.js 通过着色器实现热力图效果 在线预览 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idheatmapShader 在 https://threehub.cn 中还有很多案例 <!doctype html> <html lang"en"> <head> <meta charse…