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. 再议urlconnection和socket区别

    利用URL进行通信与利用socket进行通信有许多相似之处.它们都是利用建立连接.获取流来进行通信.那么,它们的区别在何处呢?    利用socket进行通信时,在服务器端运行一个socket通信程序 ...

  2. PHP面试题及答案解析(2)—PHP面向对象

    1. 写出 php 的 public.protected.private 三种访问控制模式的区别. public:公有,任何地方都可以访问protected:继承,只能在本类或子类中访问,在其它地方不 ...

  3. OSX: 命令行制作U盘Recovery HD

    使用命令行操作,非常easy,可是操作不当非常危急! 免责声明:假设操作不当造成的数据丢失,本人概不负责. 为什么? 不是有OSX恢复磁盘助理嘛?是的.假设仅仅想使用GUI的软件.能够去苹果官方站点: ...

  4. H5中滚动卡顿的问题

    加入-webkit-overflow-scrolling: touch;即可

  5. Android studio中正确引入so文件的方法

    相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式. Android studio中默认使用的是gradle编译方 ...

  6. How to Use HTML5 FUll Screen API(怎样使用HTML5全屏接口)

    原文链接:http://www.sitepoint.com/use-html5-full-screen-api/ 假设你不太喜欢变化太快的东西,那么web开发可能不适合你. 我曾在2012年末有写过F ...

  7. Jlink升级_官网

    Jlink官网:https://www.segger.com/ 关于JLINK固件丢失或升级固件后提示Clone的解决办法 本人用的JLINK仿真器(某宝上买的),在使用新版KEIL时,提示要升级固件 ...

  8. 【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter对SOAP协议性能测试脚本开发

    目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 JMeter对SOAP协议性能测试脚本开发 [阐 ...

  9. 01 mongodb 的特点

    mongoDB 介绍(特点.优点.原理) 介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 特点:高性能.易部署.易使用,存 ...

  10. php 获取文件加的名称

    /*** * 根本平台类型获取文件名 */ function showGetFileName($type,$url){ #判断平台类型 if($type=='android'||$type=='ios ...