1.8 KiB
1.8 KiB
## 第一个参数是访问方式,get/put/delete/post等,第二个参数是文件或者uri字符串,如/item/es/_search
## 文件中,第一行为uri字符串
## 其他行合并组成一个访问的data数据
## 测试失败,不识别query,暂时未找到解决方法
#!/usr/bin/env python
#_*_Coding:UTF-8_*_
import requests
import sys
import json
import os
class Esdata(object):
def __init__(self, refers, header):
self.refers = refers
self.header = header
## 通过脚本参数传入,决定调用的函数
def operator(self, func):
return getattr(requests, func)
## 得到response
def getdata(self, func, uri, data):
url = self.refers + uri
if self.operator(func) in ["put", "post"]:
response = self.operator(func)(url, data=data, headers=header)
else:
response = self.operator(func)(url, params=data, headers=header)
return response
if __name__ == '__main__':
refers = 'http://127.0.0.1:9200'
header = {"content-Type": "application/json"}
# 传递参数,get/put/post/delete等
methods = sys.argv[1]
d = sys.argv[2]
# 判断第二个参数是否文件
if d and os.path.isfile(d):
with open(d, 'rb') as f:
# readline函数,一次读取一行,这是第一行uri
uri = f.readline()
data = ''
# 其他行组成data,用于传入访问链接
for line in f.readlins()[0:]:
data = data + line.strip()
else:
uri = d
data = None
# 读出的data中,会把双引号转换成单引号,但转换成json格式就会异常,需要替换一下
data = data.replace("\'","\"")
es = Esdata(refers, header)
res = es.getdata(methods, uri, json.loads(data))
print(json.dumps(res.text, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False))