Elasticsearch for python API模塊化封裝

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模塊進行導入,而且調取接口使用。
調用方法python

import elasticdb.es_sysdb as es
esdb = es.Es()

舉例:
打印出索引(表)內的全部數據:
須要index名,也就是指定索引名,在這裏,假設我要查全部的monlog數據,那麼查詢語句以下:git

a = esdb.search_all(client=esdb.conn, index=monlog, type="doc")
for i in a:
    c.append(i["_source"]["message"])

接口詳情


接口參數說明github

參數 必選 類型 說明
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)api

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 輸出全部日誌(輸出所有)app

for i in esdb.search_all(client=esdb.conn, index="monlog-*", type="doc"):
     print i

4 輸出去重後的日誌(分頁,帶關鍵字)
示例:關鍵字爲空,搜索monlog的全部數據,展現第一頁,而且每頁展現10條elasticsearch

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

相關文章
相關標籤/搜索