Elasticsearch for python API模块化封装

模块的具体功能

  1. 检测Elasticsearch节点是否畅通
  2. 查询Elasticsearch节点健康状态
  3. 查询包含的关键字的日志(展示前10条)
  4. 查询指定的索引下的数据,并且分页
  5. 输出所有日志(输出全部)
  6. 输出去重后的日志(分页,带关键字)
  7. 删除指定索引的值
  8. 往索引中添加数据
  9. 获取指定index、type、id对应的数据
  10. 更新指定index、type、id所对应的数据
  11. 批量插入数据

使用方法

一般作为独立的包进行导入,并且对其进行了大数据预览的优化和处理

作为一个独立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模块化封装的更多相关文章

  1. python 以单例模式封装logging相关api实现日志打印类

    python 以单例模式封装logging相关api实现日志打印类   by:授客QQ:1033553122 测试环境: Python版本:Python 2.7   实现功能: 支持自由配置,如下lo ...

  2. Springboot整合elasticSearch的官方API实例

    前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...

  3. Python包模块化调用方式详解

    Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...

  4. Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)

    Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...

  5. 微信小程序API接口封装

    @ 目录 一,让我们看一下项目目录 二,让我们熟悉一下这三个文件目的(文件名你看着办) 三,页面js中如何使用 今天的API的封装,我们拿WX小程序开发中,对它的API (wx.request)对这个 ...

  6. Appium python API 总结

    Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...

  7. The novaclient Python API

    The novaclient Python API Usage First create a client instance with your credentials: >>> f ...

  8. elasticsearch中的API

    elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看A ...

  9. Atitit. C# java 的api 目录封装结构映射总结

    Atitit. C#  java 的api 目录封装结构映射总结 C# java ref System.Reflection System.Type, java.lang.ref concurrent ...

随机推荐

  1. Vue-cli + Express 构建的SPA Blog(前后分离)

    代码地址如下:http://www.demodashi.com/demo/12526.html 为什么学习并使用Vue 1.发展趋势 最近这几年的前端圈子,由于戏台一般精彩纷呈,从 MVC 到 MVV ...

  2. How to Start a New Cocos2d-x Game for version 3.0

    This documentation will show you how to use cocos console to create and run a new project. Runtime R ...

  3. CSS各属性选择符区别

    CSS2.1: ele[attribute] 匹配具有属性attribute的ele元素. ele[attribute = value] 匹配具有属性attribute且值为value的元素. ele ...

  4. SpringCloud系列四:实现Eureka Server的高可用并将应用注册到Eureka Sever集群上

    1. 回顾 上一篇博客中,实现了单节点的Eureka Server.Eureka Client会定时连接Eureka Server,获取注册表中的信息并缓存到本地.微服务在消费远程API时总是使用本地 ...

  5. 【Caffe代码解析】Blob

    主要功能: Blob 是Caffe作为传输数据的媒介,不管是网络权重參数,还是输入数据,都是转化为Blob数据结构来存储,网络,求解器等都是直接与此结构打交道的. 其直观的能够把它看成一个有4纬的结构 ...

  6. sklearn函数白板

    #使用make_classification构造500个样本,每个样本有20个feature from sklearn.datasets import make_classification X, y ...

  7. oracle中把函数的执行权限赋个某个用户

    赋权:grant execute on function1 to ucr_dtb1;收回执行权限:revoke execute on function1 from ucr_dtb1; 在ucr_dtb ...

  8. oracle中sqlldr工具使用时注意事项

    1.命令写在一行:如,sqlldr sh/&sh_pass@&connect_string control=&ctl_file data=&dat_file log=& ...

  9. Auto Layout之创建布局约束

    上篇文章给大家介绍了AutoLayout 的由来及OC中关于AutoLayout 的类.这篇文章将向大家介绍,在iOS 编程中怎样使用Auto Layout 构建布局约束. 创建布局约束 创建布局约束 ...

  10. 请描述Java中的时间监听机制?

    1.时间监听涉及到三个组件:事件源.事件对象.事件监听器 2.当事件源上发生某个动作时,它会调用事件监听器的一个方法,并将事件对象穿进去,开发人员在监听器中通过事件对象,拿到事件源,从而对事件源进行操 ...