Elasticsearch for python API模块化封装
Elasticsearch for python API模块化封装
模块的具体功能
- 检测Elasticsearch节点是否畅通
- 查询Elasticsearch节点健康状态
- 查询包含的关键字的日志(展示前10条)
- 查询指定的索引下的数据,并且分页
- 输出所有日志(输出全部)
- 输出去重后的日志(分页,带关键字)
- 删除指定索引的值
- 往索引中添加数据
- 获取指定index、type、id对应的数据
- 更新指定index、type、id所对应的数据
- 批量插入数据
使用方法
一般作为独立的包进行导入,并且对其进行了大数据预览的优化和处理
作为一个独立Python模块进行导入,并且调取接口使用。
调用方法
import elasticdb.es_sysdb as es
esdb = es.Es()
举例:
打印出索引(表)内的所有数据:
需要index名,也就是指定索引名,在这里,假设我要查所有的monlog数据,那么查询语句如下:
a = esdb.search_all(client=esdb.conn, index=monlog, type="doc")
for i in a:
c.append(i["_source"]["message"])
接口详情
接口参数说明
| 参数 | 必选 | 类型 | 说明 |
|---|---|---|---|
| index | ture | str | 索引名 ,可认为是数据库 |
| type | true | str | 索引类型,可认为是表名 |
| keywords | ture | str | 关键字 |
| page | ture | str | 页数,分页逻辑 |
| size | ture | str | 每页展示条数,分页逻辑使用 |
1 查询包含的关键字的日志(展示前10条)
a = esdb.search_searchdoc(index=monlog, type="doc", keywords="cpu")
for i in a:
print i["_source"]["message"]
2 查询指定的索引下的数据,并且分页
示例:查询index为”oplog-2018-08,oplog-2018-12”,并且每页展示(size)5条,输出第二页(page)
for i in esdb.serch_by_index(index="oplog-2018-08,oplog-2018-12", page=2, size=5)["hits"]["hits"]:
print(i["_source"]["message"])
3 输出所有日志(输出全部)
for i in esdb.search_all(client=esdb.conn, index="monlog-*", type="doc"):
print i
4 输出去重后的日志(分页,带关键字)
示例:关键字为空,搜索monlog的所有数据,展示第一页,并且每页展示10条
for i in esdb.serch_es_count(keywords = "", index="monlog-*", type="doc",page=1, size=10):
print i
5 删除指定索引的值
示例:删除monlog的所有值
esdb.delete_all_index(index="monlog-*", type="doc")
6 查询集群健康状态
esdb.check_health()
7 往索引中添加数据
body = {"name": 'lucy2', 'sex': 'female', 'age': 10}
print esdb.insertDocument(index='demo', type='test', body=body)
8 获取指定index、type、id对应的数据
print esdb.getDocById(index='demo', type='test', id='6gsqT2ABSm0tVgi2UWls')
9 更新指定index、type、id所对应的数据
body = {"doc": {"name": 'jackaaa'}}#修改部分字段
print esdb.updateDocById('demo', 'test', 'z', body)
10 批量插入数据
_index = 'demo'
_type = 'test_df'
import pandas as pd
frame = pd.DataFrame({'name': ['tomaaa', 'tombbb', 'tomccc'],
'sex': ['male', 'famale', 'famale'],
'age': [3, 6, 9],
'address': [u'合肥', u'芜湖', u'安徽']})
print esAction.insertDataFrame(_index, _type, frame)
代码示例
from elasticsearch import Elasticsearch
from elasticsearch import helpers
class Es:
def __init__(self):
self.hosts = "127.0.0.1"
self.conn = Elasticsearch(hosts=self.hosts, port=9200)
def check(self):
'''
输出当前系统的ES信息
'''
return self.conn.info()
def ping(self):
return self.conn.ping()
def check_health(self):
'''
检查集群的健康状态
:return:
'''
status = self.conn.transport.perform_request('GET', '/_cluster/health', params=None)["status"]
return statuu
def get_index(self):
return self.conn.indices.get_alias("*")
def search_specify(self, index=None, type=None, keywords=None, page=None, size=None):
# 查询包含的关键字的日志
query = {
'query': {
'match': {
'message': keywords
}
},
'from':page * size,
'size':size
}
message = self.searchDoc(index, type, query)
return message
完整的代码地址:https://github.com/Alexanderklau/elasticdb
Elasticsearch for python API模块化封装的更多相关文章
- python 以单例模式封装logging相关api实现日志打印类
python 以单例模式封装logging相关api实现日志打印类 by:授客QQ:1033553122 测试环境: Python版本:Python 2.7 实现功能: 支持自由配置,如下lo ...
- Springboot整合elasticSearch的官方API实例
前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...
- Python包模块化调用方式详解
Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...
- Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)
Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...
- 微信小程序API接口封装
@ 目录 一,让我们看一下项目目录 二,让我们熟悉一下这三个文件目的(文件名你看着办) 三,页面js中如何使用 今天的API的封装,我们拿WX小程序开发中,对它的API (wx.request)对这个 ...
- Appium python API 总结
Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...
- The novaclient Python API
The novaclient Python API Usage First create a client instance with your credentials: >>> f ...
- elasticsearch中的API
elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看A ...
- Atitit. C# java 的api 目录封装结构映射总结
Atitit. C# java 的api 目录封装结构映射总结 C# java ref System.Reflection System.Type, java.lang.ref concurrent ...
随机推荐
- mongo: 删
删除:remove db.CollectionName.remove(查询表达式,选项); 查询表达式:匹配要删除的文档,它是一个json对象 选项:{justOne:true/false},是否只删 ...
- Install Erlang and Elixir in CentOS 7
In this tutorial, we will be discussing about how to install Erlang and Elixir in CentOS 7 minimal s ...
- PHP面试题及答案解析(4)—PHP核心技术
1.写出一个能创建多级目录的PHP函数. <?php /** * 创建多级目录 * @param $path string 要创建的目录 * @param $mode int 创建目录的模式,在 ...
- Andrew Ng机器学习笔记+Weka相关算法实现(五)SVM最优间隔和核方法
这一章主要解说Ng的机器学习中SVM的兴许内容.主要包括最优间隔分类器求解.核方法. 最优间隔分类器的求解 利用以一篇讲过的的原始对偶问题求解的思路,我们能够将相似思路运用到SVM的求解上来. 详细的 ...
- slam command tool
cd imu_ws source devel/setup.bash ls -l /dev |grep ttyUSB sudo chmod /dev/ttyUSB0 rosrun imu_pb imu ...
- java之数字彩虹雨
© 版权声明:本文为博主原创文章,转载请注明出处 数字彩虹雨: 从上至下,随机出现一串字符串,以不同的速度运行到底部:类似于黑客帝国里面的场景 GitHub:https://github.com/Ta ...
- org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
© 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述 启动hibernate测试案例时报错如下: 2.解决方案: 2.1 第一次解决:MySQL驱动版本太高.使用的hibernate版本为5 ...
- Redis, Memcache, Mysql差别
在使用Redis过程中,我们发现了不少Redis不同于Memcached.也不同于MySQL的特征. (本文主要讨论Redis未启用VM支持情况) 1. Schema MySQL: 需事先设计 Mem ...
- ARM初学引导_转
一直都在听说ARM有多么好,有多神奇,有多难学.故学它时都兴奋加恐惧.呵呵,我刚好用ARM也有一段时间了.写点东西给ARM的初学者,希望能起到帮助作用. 1,记住:ARM很简单,就如从51转换到PIC ...
- windows svchost.exe 引起的出现的莫名其妙的窗口失去焦点
我不知道你们遇到没,反正我是遇到了,现在我就把解决方法给你们,当然都是从网上整理下来的 这个失去焦点可以分为两种,一种是病毒,一种是系统自带的问题 首先你得知道自己的窗口被什么给挤掉了焦点 先看看这篇 ...