工作中实战编写快速把ES中的线上数据,复制到测试环境ES(也可导入到DB):
分三步:
1.导出线上某集群环境的数据到本地json文件,index需保持一致
2.新建索引,mapping,别名等操作
3.利用bulk API导入数据
注:可直接一步修改index下所有type数据(会删除原有数据)
#!/usr/bin/python
# -*- coding=utf-8 -*-
import requests
from elasticsearch import Elasticsearch
import elasticsearch.helpers
import certifi
import json
import os
import time
from collections import deque
#请求获取ES数据:
class Request_es(object):
def __init__(self,url,index):
#索引
self.re_index = index
#ES的host
self.url = url
self.Es_host = Elasticsearch(self.url, use_ssl=False, ca_certs=certifi.where())
#请求index的所有索引信息的 url:
self.Es_index_url = url+'/'+self.re_index
#搜索有数据的线上ES的url:
self.ES_url = url+'/'+self.re_index+'/_search'
#请求目标数据
def search_data(self):
print('request data begin...')
# 创建前删除已有的json文件
try:
os.remove(self.re_index + "_data" + ".json")
except:
os.system('touch ' + self.re_index + "_data" + ".json")
es_search_options =