python连接 elasticsearch 查询数据,支持分页
使用python连接es并执行最基本的查询
from elasticsearch import Elasticsearch
es = Elasticsearch(["localhost:9200"])
para = {"_source":"message"}
es.search(index=index_name, q='offset: xx', doc_type='doc' ,params=para, size=10)
常用参数:
index - 索引名
q - 查询指定匹配 使用Lucene查询语法
from_ - 查询起始点 默认0
doc_type - 文档类型
size - 指定查询条数 默认10
params - 查询的字段
#!/usr/bin/python
# coding=utf-8
import datetime
import sys
import getopt
from elasticsearch import Elasticsearch
"""
初始化elasticsearch连接
"""
def init_es():
return Elasticsearch(["localhost:9200"])
"""
查询数据
"""
def query_data(log_date, puid, count):
es = init_es()
para = {"_source":"message"}
index_name = "center-"+log_date
data_array = es.search(index=index_name, q='offset: "'+ str(puid) +'"', doc_type='doc' ,params=para, size=int(count))
print_data(data_array, count)
"""
分页查询数据
"""
def query_data_by_page(log_date, puid, page_count, page_num):
es = init_es()
para = {"_source":"message"}
index_name = "center-"+log_date
from_page = int(page_count) * (int(page_num)-1)
data_array = es.search(index=index_name, q='offset: "'+ str(puid) +'"', doc_type='doc' ,params=para, size=int(page_count), from_=from_page)
print_data(data_array, page_count)
"""
打印数据
"""
def print_data(data_array, count):
datas = data_array["hits"]["hits"]
print "符合条件的数据总条数为:" + str(data_array['hits']['total'])
print "具体内容如下:"
for data in datas:
print data['_source']['message']
"""
处理逻辑调用查询
"""
def run(param):
puid = param['puid']
log_date = param['log_date'] if param['log_date'] else datetime.datetime.now().strftime('%Y.%m.%d')
count = param['count'] if param['count'] else 50
is_page = param['is_page']
if not is_page:
query_data(log_date, puid, count)
else:
page_count = param['page_count']
page_num = param['page_num']
query_data_by_page(log_date, puid, page_count, page_num)
def main(argv):
try:
opts, args = getopt.getopt(argv[1:], 'hp:l:c:io:n:',
['help', 'puid=', 'log_date=', 'count=', 'is_page', 'page_count=', '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, 'count': None,'is_page': False, 'page_count': 50, 'page_num': 1}
for opt, value in opts:
if opt in ('-h', '--help'):
print("")
print("Usage:python query_client_log.py -p puid [-c count -l log_date -i [-o page_count -n page_count]] | --puid=puid ....")
print("-p, --puid 用户id")
print("-l, --log_date 数据日期,格式:yyyy.mm.dd")
print("-c, --count 查询数据的条数,默认50条")
print("-i, --is_page 用于标记是否分页, 默认不分页")
print("-o, --page_count 分页查询,每页数据的条数,默认每页50条")
print("-n, --page_num 分页查询,当选查询的页号,默认从第1页开始查询")
print("-h, --help 查看帮助并退出")
print("")
sys.exit()
if opt in ('-p', '--puid'):
VARS['puid'] = value
elif opt in ('-l', '--log_date'):
VARS['log_date'] = value
elif opt in ('-c', '--count'):
VARS['count'] = value
elif opt in ('-i', '--is_page'):
VARS['is_page'] = True
elif opt in ('-o', '--page_count'):
VARS['page_count'] = value
elif opt in ('-n', '--page_num'):
VARS['page_num'] = value
run(VARS)
if __name__ == '__main__':
main(sys.argv)
参考
- https://www.cnblogs.com/xiao987334176/p/10130712.html
- https://www.cnblogs.com/shaosks/p/7592229.html
- https://blog.csdn.net/u011587401/article/details/77476858
- https://www.cnblogs.com/Dev0ps/p/9493576.html
python连接 elasticsearch 查询数据,支持分页的更多相关文章
- 使用Connector / Python连接MySQL/查询数据
使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...
- python连接oracle导出数据文件
python连接oracle,感觉table_list文件内的表名,来卸载数据文件 主脚本: import os import logging import sys import configpars ...
- Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
Elasticsearch 的查询很灵活,并且有Filter,有分组功能,还有ScriptFilter等等,所以很强大.下面上代码: 一个简单的查询,返回一个List<对象> .. ...
- Python 2.7_初试连接Mysql查询数据导出到excel_20161216
由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码初次试验,边摸索边学习吧. xlsx ...
- python之elasticsearch查询
下载所需模块 python安装好的情况下,通过pip install elasticsearch进行es模块的安装 安装完成后通过pip list命中查询 导入模块 from elasticsearc ...
- 使用Python对ElasticSearch获取数据及操作
#!/usr/bin/env python# -*- coding: utf-8 -*-""" @Time : 2018/7/4 @Author : LiuXueWen ...
- python 配合 es 查询数据
1.python脚本 [root@do1cloud03 ~]# cat python-es.py #!/usr/bin/env python3 from elasticsearch import El ...
- linux shell脚本连接oracle查询数据插入文件和日志文件中
#!/bin/sh sqlplus "用户名/密码@数据库"<<EOF 或者只有一个库的 :sqlplus "用户名/密码"<<EOF ...
- 使用python连接elasticsearch
官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/overview.html 安装的时候注意 ...
随机推荐
- xmarin live player 连接 IOS以及安卓实现实时效果查看
原文:xmarin live player 连接 IOS以及安卓实现实时效果查看 在之前有介绍过xamarin 单独IOS项目开发的运行环境搭建,但是这段时间我看到了xmarin forms 3.0 ...
- WPF 界面实现多语言支持 中英文切换 动态加载资源字典
1.使用资源字典,首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面[注意:添加xmlns:s="clr-namespace:System;assem ...
- SICP 1.6-1.8
1.6由于scheme应用序求值的性质,该函数会陷入循环(一直计算 improve guess x) 1.7 值过小,0.001这个精度远远不够... 值过大,由于浮点数精度有限,(比如使用IEEE7 ...
- ASP CRUD
//UserInfoList.html <!DOCTYPE html> <html><head><meta http-equiv="Content- ...
- 在Winform窗体中使用WPF控件(附源码)
原文:在Winform窗体中使用WPF控件(附源码) 今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件.原有是我在百度上搜索相关信息无果,遂干脆动手自己实现. W ...
- 一款好用的视频转换gif的小软件——抠抠视频秀
在平常生活中,我们拍下来精彩的视频想要转换为gif动画,或是想要录制网页上的视频.电脑上的鼠标操作等等,大家可以使用以下这款很好用的视频转换gif的小软件——抠抠视频秀,这个软件操作简单 ...
- 图像滤镜艺术---流行艺术风滤镜特效PS实现
原文:图像滤镜艺术---流行艺术风滤镜特效PS实现 今天,本人给大家介绍一款新滤镜:流行艺术风效果,先看下效果吧! 原图 流行艺术风效果图 上面的这款滤镜效果是不是很赞,呵呵,按照本人以往的逻辑,我会 ...
- 图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效
原文:图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效 本文是我收集的一些使用Photoshop来实现Instagram滤镜的一些内容,在这里跟大家分享一下,这些效果是完 ...
- EF日志记录,包括记录Linq生成的Sql
<interceptors> <interceptor type="System.Data.Entity.Infrastructure.Interception.Datab ...
- EF 里的 join and Group Join
join ); pageCount = _db.Orders.Count(); return _db.Orders.OrderByDescending(c=>c.ID).Skip(skip).T ...