python查询elasticsearch(Query DSL) 实例
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)
python查询elasticsearch(Query DSL) 实例的更多相关文章
- Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
目录 引言 概要 Query and filter context Match All Query 全文查询 Full text queries 小结 参考文档 引言 虽然之前做过 elasticse ...
- Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
目录 引言 构建示例 match operator 参数 analyzer lenient 参数 Fuzziness fuzzniess 参数 什么是模糊搜索? Levenshtein Edit Di ...
- Elasticsearch Query DSL
Elasticsearch Query DSL By:授客 QQ:1033553122 1. match_all 1 2. match 2 3. match_phrase 5 4. match_phr ...
- Elasticsearch Query DSL(查询语言)
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- python 查询 elasticsearch 常用方法(Query DSL)
1. 建立连接 from elasticsearch import Elasticsearch es = Elasticsearch(["localhost:9200"]) 2. ...
- Elasticsearch Query DSL查询入门
本篇为学习DSL时做的笔记,适合ES新手,大佬请略过~ Query DSL又叫查询表达式,是一种非常灵活又富有表现力的查询语言,采用JSON接口的方式实现丰富的查询,并使你的查询语句更灵活.更精确.更 ...
- Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文 ...
- Elasticsearch Query DSL备忘(1)(Constant score query和Bool Query)
Query DSL (Domain Specific Language),基于json的查询方式 1.Constant score query,常量分值查询,目的就是返回指定的score,一般都结合f ...
- Elasticsearch Query DSL 语言介绍
目录 0. 引言 1. 组合查询 2. 全文搜索 2.1 Match 2.2 Match Phase 2.3 Multi Match 2.4 Query String 2.5 Simple Query ...
随机推荐
- EF ModelFirst 步骤
1 新建实体数据模型 ,选择空模型 2 建各个实体,并指定各字段属性,字符串需要指定长度 3 添加关系,选择关系类型,勾选添加外键 4 新建空的数据库,然后在edmx文件的空白处点右键,选择从模型生成 ...
- 用树莓派和DS18B20做个汽车温度记录仪
原文:用树莓派和DS18B20做个汽车温度记录仪 用树莓派和DS18B20做个汽车温度记录仪[原创] 很想知道夏日阳光暴晒下,汽车内的最高温度以及温度的变化情况.觉得用树莓派和DS18B20来实现应该 ...
- jquery QQ微博
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 基于树莓派的微型气象站设计与开发(Windows 10 IoT Core)
前言 树莓派(Raspberry Pi,RPi)是专门为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,可以运行Linux或者Windows 10 IoT Core操作系统.本文将利用树莓派和U ...
- 教你干掉win10全家桶
原文: 教你干掉win10全家桶 这些并不好用的自带应用例如:groove音乐,相片,股票……一直占据着我们的默认应用.如果它们是一直静静的躺在那里还好,最多不用就是了.当我们想要浏览图片或者看视频的 ...
- 小记Linux下对mac80211内核模块修改
mac80211内核模块实现了对802.11协议的处理过程.其中mlme.c文件中的内容实现了对Deauth管理帧的处理.考虑到Deauth攻击至今仍没有好的防御方法(据说有802.11w,可是我一直 ...
- win10 uwp 如何打包Nuget给其他人
原文:win10 uwp 如何打包Nuget给其他人 本文告诉大家,如果自己有做一些好用的库,如何使用 Nuget 打包之后上传,分享给大家. 首先需要知道一些 Nuget 打包需要知道的,请看 wi ...
- 芒果TV For Windows10 成长历史 & 迭代历史 & 新闻报道
芒果TV 是国内领先的基于Windows10操作系统并支持Windows10全系列设备的视频应用和内容服务商. Win10商店版<芒果TV>是湖南快乐阳光互动娱乐传媒有限公司专门为Wind ...
- 微信小程序把玩(十二)text组件
原文:微信小程序把玩(十二)text组件 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字. wxml <view > <text>我是文本组件&l ...
- 微信小程序把玩(十三)progress组件
原文:微信小程序把玩(十三)progress组件 进度条描述的是一种加载的状态,比如软件升级下载进度, 视频,图片下载进度- 主要属性: wxml <progress percent=" ...