由于elasticsearch数据在线上,偶尔需要将数据导到本地环境进行分析。目前有需求是将数据导入到excel表中,下面是我在用的实现方案。
1、将线上elasticsearch数据备份成文件
首先通过elasticdump组件将线上指定的index导出成文本文件
bash
elasticdump --input="http://192.168.0.30:9200/adv_default" --output="/bigdata/adv_default.data" --type=data --limit=10000
数据样例:
2、将生成的文本文件下载到指定位置存储,以我本地电脑为例
3、通过python脚本将数据写入到excel
python
import json
import pandas as pd
# 读取JSON文件
json_file_path = 'D:/data/adv_default.data'
with open(json_file_path, 'r', encoding='utf-8') as file:
json_data = file.readlines()
# 解析JSON数据
data_list = []
for line in json_data:
json_line = json.loads(line)
source_data = json_line['_source']
data_list.append(source_data)
# 转换为DataFrame
df = pd.DataFrame(data_list)
# 指定 输出的 Excel 文件路径
excel_output_file = json_file_path.split('.')[0] + '.xlsx'
# 将数据写入Excel文件
df.to_excel(excel_output_file, index=False)
生成的文件格式如下: