通过python使用游标查询Elasticsearch数据并写入文件
2018-02-06 10:36
537 查看
import json import os import sys import urllib2 reload(sys) sys.setdefaultencoding('utf-8') class exportEsData(): def __init__(self, url, siteid, startdate, enddate, scroll): self.url = '%s/_search' % (url) self.siteid = siteid self.startdate = startdate self.enddate = enddate self.scroll = scroll self.result = "" def exportData(self, scrollID): #esdata = urllib2.urlopen("http://www.baidu.com/").read() opener = urllib2.build_opener() headers = {'User-Agent':'Mozilla /5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' } if scrollID == "": print("Exporting site%s..." % self.siteid) queryJson = { \ "size": 1000, \ "query": { "filtered": {"filter": {"bool": {"must": {"bool": {"must": [ \ {"query": {"match": {"b": {"query": self.siteid,"type": "phrase"}}}}, \ {"range":{"c":{"gte": self.startdate + " 00:00:00","lte":self.enddate + " 23:59:59"}}} \ ]}}}}} \ } \ } url2 = '%s?scroll=%s' % (self.url, self.scroll) else: queryJson = { "scroll" : self.scroll, "scroll_id" : scrollID } url2 = self.url + "/scroll" req = urllib2.Request(url2, data=json.dumps(queryJson), headers=headers) response = opener.open(req) esdata = response.read() self.processData(esdata) def processData(self, data): #msg = json.dumps(data, ensure_ascii=False) msg = json.loads(data) #print(type(data)) #print(msg['hits']['hits'][2]['_source']['f8']) scrollID = msg["_scroll_id"] attacks = msg['hits']['hits'] for attack in attacks: self.result = '%s%s\n' % (self.result, attack['_source']) if len(attacks) > 0: self.exportData(scrollID) else: self.writeFile(self.result) def writeFile(self, data): try: filename = 'AttackData_%s.txt' % (self.siteid) f = open(filename, "w+") f.write(data) print("site%s successfully exported" % self.siteid) finally: f.flush() f.close() if __name__ == '__main__': siteids = [1912, 1918] for siteid in siteids: exportEsData("http://127.0.0.1:9201", siteid, "2017-07-03", "2017-12-01", "5m").exportData("") os.system("pause")
相关文章推荐
- python 文件处理模块的使用,给一个文件写入数据
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- 使用python访问mysql数据库/取数据/写入文件
- 使用Jdom查询数据库后,把数据写入xml文件中
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- 使用python查询MySQL数据并写入redis
- SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串
- winform下通过webclient使用非流方式上传(post)数据和文件
- oracle查询数据,以asci写入文件
- 使用python读取csv文件,并将数据更新至mysql
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- python编程之一:使用网格索引算法进行空间数据查询
- SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串
- java中使用JXL对Excel文件进行数据的写入、导出操作
- winform下通过webclient使用非流方式上传(post)数据和文件
- 动态创建文本文件并写入数据 避免正由另一进程使用,因此该进程无法访问该文件。的问题
- [转贴]通过 C# 使用 J# 类库中的 Zip 类压缩文件和数据
- 使用C#查询excel文件中的数据
- Java 使用DataInputStream将数据写入文件,使用FileReader读取演示
- 通过ASP程序将EXCEL文件数据写入数据库