通常做爲獨立的包進行導入,而且對其進行了大數據預覽的優化和處理
做爲一個獨立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