python查询elasticsearch(Query DSL) 实例
2019-06-20 23:24
477 查看
import datetime import sys import getopt import hashlib from elasticsearch import Elasticsearch """ 初始化elasticsearch连接 """ def init_es(): return Elasticsearch(["localhost:9200"]) """ 查询数据, 支持分页 """ def query_data(log_date, puid, data_rows, page_num): es = init_es() body = { "query":{ "term":{ "puid":"" } }, "sort":[{ "datatime":{ "order":"asc" } },{ "@timestamp":{ "order":"asc" } }], "size":"", "from":"" } index_name = "test-"+log_date body["query"]["term"]["puid"] = run_md5(str(puid)) body["size"] = data_rows from_page = int(data_rows) * (int(page_num)-1) body["from"] = from_page data_array = es.search(index=index_name, doc_type='doc', body=body) print_data(data_array, data_rows) """ 打印数据 """ def print_data(data_array, data_rows): datas = data_array["hits"]["hits"] #print datas print "符合条件的数据总条数为:" + str(data_array['hits']['total']) print "当前显示的数据如下:" for data in datas: result = data['_source']['message'] print result.strip(result.split("\t")[0]).strip("\t") """ md5加密 """ def run_md5(puid): md = hashlib.md5() md.update(puid.encode('utf-8')) return md.hexdigest() """ 处理逻辑调用查询 """ def run(param): puid = param['puid'] log_date = param['log_date'] if param['log_date'] else datetime.datetime.now().strftime('%Y-%m-%d') data_rows = param['data_rows'] page_num = param['page_num'] query_data(log_date, puid, data_rows, page_num) def main(argv): try: opts, args = getopt.getopt(argv[1:], 'hp:d:r:n:', ['help', 'puid=', 'log_date=', 'data_rows=', 'page_num=']) except getopt.GetoptError as err: print str(err) sys.exit(2) if not opts: print "The puid is a must !" opts = [('-h', '')] VARS = {'puid': None, 'log_date': None, 'data_rows': 50, 'page_num': 1} for opt, value in opts: if opt in ('-h', '--help'): print("") print("Usage:python query_client_log.py -p puid [-r data_rows -d log_date [-n page_num]] | --puid=puid ....") print("-p, --puid 用户id,此为必传参数") print("-d, --log_date 数据日期,格式:yyyy-mm-dd") print("-r, --data_rows 查询数据的条数,如为分页查询则为每页数据的条数,默认50条") print("-n, --page_num 分页查询,当前查询的页号,默认不分页") print("-h, --help 查看帮助并退出") print("") sys.exit() if opt in ('-p', '--puid'): VARS['puid'] = value elif opt in ('-d', '--log_date'): VARS['log_date'] = value elif opt in ('-r', '--data_rows'): VARS['data_rows'] = value elif opt in ('-n', '--page_num'): VARS['page_num'] = value run(VARS) if __name__ == '__main__': main(sys.argv)
相关文章推荐
- 009-elasticsearch【三】示例数据导入、URI查询方式简介、Query DSL简介、查询简述【_source、match、must、should等】、过滤器、聚合
- Elasticsearch(8)实践四-使用特定域语言查询(Query DSL)
- Python-ElasticSearch搜索查询的讲解
- Solr4.0(SolrCloud) & ElasticSearch(ES) 比较(三):查询方式(query_then_fetch)
- Querydsl有趣的通用查询框架
- 深入理解ElasticSearch(查询DSL进阶)读书笔记
- ElasticSearch的 Query DSL 和 Filter DSL
- python查询文件夹下excel的sheet名代码实例
- 通过python使用游标查询Elasticsearch数据并写入文件
- Python中的MongoDB基本操作:连接、查询实例
- Elasticsearch的javaAPI之Query DSL-filters
- Elasticsearch Span Query跨度查询
- Spring MVC + Spring MongoDB + Querydsl 通过maven整合实例
- Python操作Mysql实例代码教程在线版(查询手册)
- 实例讲解hadoop中的map/reduce查询(python语言实现)
- 一个Elasticsearch嵌套nested查询的实例
- 结构化查询(Query DSL)和结构化过滤(Filter DSL)
- Python查询MySQL进行远程采集图片实例
- elasticsearch分布式搜索查询语句(实例)
- Python查询MySQL进行远程采集图片实例