簡體   English   中英

將彈性集群數據讀入python數據框

[英]Reading Elastic cluster data into python data frame

我對elasticsearch很陌生。 所以,如果我問的是一個非常簡單的問題,請原諒。

在我的工作場所,我們有適當的 ELK 設置。

由於數據量非常大,我們只存儲了 14 天的數據,我的問題是如何在 Python 中讀取數據,然后將我的分析存儲在一些 NOSQL 中。

到目前為止,我的主要目標是以數據幀或彈性集群中的任何格式將原始數據讀入 python。

我想在不同的時間間隔內獲取它,例如 1 天、1 周、1 個月等。

我在過去的 1 周里一直在掙扎。

您可以使用以下代碼來實現

# Create a DataFrame object
from pandasticsearch import DataFrame
df = DataFrame.from_es(url='http://localhost:9200', index='indexname')

要獲取索引的架構:-

 df.print_schema()

之后,您可以對 df 執行常規數據幀操作。

如果要解析結果,請執行以下操作:-

from elasticsearch import Elasticsearch
es = Elasticsearch('http://localhost:9200')
result_dict = es.search(index="indexname", body={"query": {"match_all": {}}})

然后最后將所有內容都放入您的最終數據框中:-

from pandasticsearch import Select
pandas_df = Select.from_dict(result_dict).to_pandas()

我希望它有幫助..

這取決於您希望如何從 Elasticsearch 讀取數據。 它是增量閱讀,即閱讀每天出現的新數據,還是像批量閱讀一樣。 對於后者,您需要使用python中Elasticsearch的批量API,對於前者,您可以將自己限制為簡單的范圍查詢。

讀取批量數據的示意圖代碼: https : //gist.github.com/dpkshrma/04be6092eda6ae108bfc1ed820621130

ES的批量API使用方法:

如何使用Bulk API在ES中使用Python存儲關鍵字

https://elasticsearch-py.readthedocs.io/en/master/helpers.html#elasticsearch.helpers.bulk

如何使用范圍查詢進行增量插入:

https://martinapugliese.github.io/python-for-(some)-elasticsearch-queries/

如何使用 python 在一個彈性搜索查詢中進行范圍和匹配查詢?

由於您希望以不同的間隔插入數據,因此您還需要執行日期聚合。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

如何使用 Python 對 Elasticsearch 中的對象執行多重聚合?

一旦您發出 Elasticsearch 查詢,您的數據將被收集在一個臨時變量中,您可以使用PyMongo等 NOSQL 數據庫上的 python 庫將數據插入到 Elasticsearch 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM