国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch:從 ES|QL 到 Python 數(shù)據(jù)幀

這篇具有很好參考價值的文章主要介紹了Elasticsearch:從 ES|QL 到 Python 數(shù)據(jù)幀。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在我之前的文章 “Elasticsearch:ES|QL 查詢展示”,我展示了如何在 Kibana 中使用 ES|QL 對索引來進(jìn)行查詢及統(tǒng)計(jì)。在很多的情況下,我們需要在客戶端中來對數(shù)據(jù)進(jìn)行查詢,那么我們該怎么辦呢?我們需要使用到 Elasticsearch 的客戶端。在今天的文章中,我們來展示如何使用 Python 來對數(shù)據(jù)進(jìn)行查詢。

注意:為了使用 ES|QL,我們的 Elastic Stack 版本至少在 8.12 及以上。

安裝

如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,請參考如下的鏈接來進(jìn)行安裝:

  • 如何在 Linux,MacOS 及 Windows 上進(jìn)行安裝 Elasticsearch
  • Kibana:如何在 Linux,MacOS 及 Windows上安裝 Elastic 棧中的 Kibana

在安裝的時候,我們選擇 Elastic Stack 8.x 來進(jìn)行安裝。特別值得指出的是:ES|QL 只在 Elastic Stack 8.11 及以后得版本中才有。你需要下載 Elastic Stack 8.11 及以后得版本來進(jìn)行安裝。

在首次啟動 Elasticsearch 的時候,我們可以看到如下的輸出:

Elasticsearch:從 ES|QL 到 Python 數(shù)據(jù)幀,Elasticsearch,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,python,全文檢索

我們需要記下 Elasticsearch 超級用戶 elastic 的密碼。

我們還需要安裝 Elasticsearch 的 python 依賴包:

pip3 install elasticsearch==8.12.1
$ pip3 list | grep elasticsearch
elasticsearch                8.12.1

準(zhǔn)備數(shù)據(jù)

我們參考之前的文章 “Elasticsearch:ES|QL 查詢展示” 來創(chuàng)建索引:

PUT sample_data
{
  "mappings": {
    "properties": {
      "client.ip": {
        "type": "ip"
      },
      "message": {
        "type": "keyword"
      }
    }
  }
}
PUT sample_data/_bulk
{"index": {}}
{"@timestamp": "2023-10-23T12:15:03.360Z", "client.ip": "172.21.2.162", "message": "Connected to 10.1.0.3", "event.duration": 3450233}
{"index": {}}
{"@timestamp": "2023-10-23T12:27:28.948Z", "client.ip": "172.21.2.113", "message": "Connected to 10.1.0.2", "event.duration": 2764889}
{"index": {}}
{"@timestamp": "2023-10-23T13:33:34.937Z", "client.ip": "172.21.0.5", "message": "Disconnected", "event.duration": 1232382}
{"index": {}}
{"@timestamp": "2023-10-23T13:51:54.732Z", "client.ip": "172.21.3.15", "message": "Connection error", "event.duration": 725448}
{"index": {}}
{"@timestamp": "2023-10-23T13:52:55.015Z", "client.ip": "172.21.3.15", "message": "Connection error", "event.duration": 8268153}
{"index": {}}
{"@timestamp": "2023-10-23T13:53:55.832Z", "client.ip": "172.21.3.15", "message": "Connection error", "event.duration": 5033755}
{"index": {}}
{"@timestamp": "2023-10-23T13:55:01.543Z", "client.ip": "172.21.3.15", "message": "Connected to 10.1.0.1", "event.duration": 1756467}

使用 Elasticsearch 客戶端來進(jìn)行查詢

Elasticsearch 查詢語言 (ES|QL) 提供了一種強(qiáng)大的方法來過濾、轉(zhuǎn)換和分析 Elasticsearch 中存儲的數(shù)據(jù)。 它旨在易于最終用戶、SRE 團(tuán)隊(duì)、應(yīng)用程序開發(fā)人員和管理員學(xué)習(xí)和使用。 但它也非常適合熟悉 Pandas 和其他基于數(shù)據(jù)框的框架的數(shù)據(jù)科學(xué)家。

Elasticsearch:從 ES|QL 到 Python 數(shù)據(jù)幀,Elasticsearch,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,python,全文檢索

事實(shí)上,ES|QL 查詢會生成帶有命名列的表,即數(shù)據(jù)幀。 但是如何使用 Python 處理這些數(shù)據(jù)呢? ES|QL 目前沒有 Apache Arrow 輸出,但 CSV 輸出是一個很好的開始。

我們使用如下的測試程序:

esql.py

from io import StringIO
import numpy as np
import os

from elasticsearch import Elasticsearch
import pandas as pd

endpoint = os.getenv("ES_SERVER")
username = os.getenv("ES_USER")
password = os.getenv("ES_PASSWORD")
fingerprint = os.getenv("ES_FINGERPRINT")
 
url = f"https://{endpoint}:9200"
 
es = Elasticsearch( url ,
    basic_auth = (username, password),
    ssl_assert_fingerprint = fingerprint,
    http_compress = True )
 
# print(es.info())

response = es.esql.query(query="FROM sample_data", format="csv")
df = pd.read_csv(StringIO(response.body))
print(df)
print("==================================================================")

response = es.esql.query(
    query="""
    FROM sample_data
    | LIMIT 5
    | sort @timestamp desc
    | WHERE event.duration > 3000000
    | WHERE message LIKE "Connection *"
    """,
    format="csv"
)

df = pd.DataFrame = pd.read_csv(StringIO(response.body))

print(df)
print("==================================================================")


response = es.esql.query(
    query="""
    FROM sample_data
    | STATS avg=AVG(event.duration), count=COUNT(*) BY client.ip
    | SORT count
    """,
    format="csv"
)

df = pd.DataFrame = pd.read_csv(
    StringIO(response.body),
    dtype={"count":"Int64", "avg":np.float64}
)

print(df)
print("==================================================================")

在運(yùn)行上面的代碼之前,我們需要在 terminal 中設(shè)置相應(yīng)的環(huán)境變量:

export ES_SERVER="localhost"
export ES_USER="elastic"
export ES_PASSWORD="q2rqAIphl-fx9ndQ36CO"
export ES_FINGERPRINT="bce66ed55097f255fc8e4420bdadafc8d609cc8027038c2dd09d805668f3459e"

然后,我們使用如下的命令來運(yùn)行:

python3 esql.py
$ python3 esql.py 
/Users/liuxg/python/esql/esql.py:22: ElasticsearchWarning: No limit defined, adding default limit of [500]
  response = es.esql.query(query="FROM sample_data", format="csv")
                 @timestamp     client.ip  event.duration                message
0  2023-10-23T12:15:03.360Z  172.21.2.162         3450233  Connected to 10.1.0.3
1  2023-10-23T12:27:28.948Z  172.21.2.113         2764889  Connected to 10.1.0.2
2  2023-10-23T13:33:34.937Z    172.21.0.5         1232382           Disconnected
3  2023-10-23T13:51:54.732Z   172.21.3.15          725448       Connection error
4  2023-10-23T13:52:55.015Z   172.21.3.15         8268153       Connection error
5  2023-10-23T13:53:55.832Z   172.21.3.15         5033755       Connection error
6  2023-10-23T13:55:01.543Z   172.21.3.15         1756467  Connected to 10.1.0.1
==================================================================
                 @timestamp    client.ip  event.duration           message
0  2023-10-23T13:52:55.015Z  172.21.3.15         8268153  Connection error
==================================================================
/Users/liuxg/python/esql/esql.py:44: ElasticsearchWarning: No limit defined, adding default limit of [500]
  response = es.esql.query(
          avg  count     client.ip
0  1232382.00      1    172.21.0.5
1  3450233.00      1  172.21.2.162
2  2764889.00      1  172.21.2.113
3  3945955.75      4   172.21.3.15
==================================================================

很顯然,我們得到了最終的結(jié)果。文章來源地址http://www.zghlxwxcb.cn/news/detail-841555.html

到了這里,關(guān)于Elasticsearch:從 ES|QL 到 Python 數(shù)據(jù)幀的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • elasticsearch(ES)分布式搜索引擎04——(數(shù)據(jù)聚合,自動補(bǔ)全,數(shù)據(jù)同步,ES集群)

    elasticsearch(ES)分布式搜索引擎04——(數(shù)據(jù)聚合,自動補(bǔ)全,數(shù)據(jù)同步,ES集群)

    **聚合(aggregations)**可以讓我們極其方便的實(shí)現(xiàn)對數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算。例如: 什么品牌的手機(jī)最受歡迎? 這些手機(jī)的平均價格、最高價格、最低價格? 這些手機(jī)每月的銷售情況如何? 實(shí)現(xiàn)這些統(tǒng)計(jì)功能的比數(shù)據(jù)庫的sql要方便的多,而且查詢速度非??欤梢詫?shí)現(xiàn)近

    2024年02月08日
    瀏覽(36)
  • Elasticsearch:從 ES|QL 到 PHP 對象

    Elasticsearch:從 ES|QL 到 PHP 對象

    作者:來自 Elastic?Enrico Zimuel 從 elasticsearch-php v8.13.0 開始,你可以執(zhí)行 ES|QL?查詢并將結(jié)果映射到 stdClass 或自定義類的 PHP 對象。 ES|QL 是 Elasticsearch 8.11.0 中引入的一種新的 Elasticsearch 查詢語言。 目前,它在技術(shù)預(yù)覽版中可用。 它提供了一種強(qiáng)大的方法來過濾、轉(zhuǎn)換和分析存

    2024年04月13日
    瀏覽(28)
  • Elasticsearch (ES) 搜索引擎: 數(shù)據(jù)類型、動態(tài)映射、多類型(子字段)

    原文鏈接:https://xiets.blog.csdn.net/article/details/132348634 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Elasticsearch 專欄(總目錄) ES 映射字段的 數(shù)據(jù)類型 ,官網(wǎng)文檔參考:Field data types。 下面是 ES 常用的一些基本數(shù)據(jù)類型。 字符串 類型: keyword :類型。 text :文本類型。

    2024年03月23日
    瀏覽(38)
  • ES|QL:Elasticsearch的 新一代查詢語言

    ES|QL:Elasticsearch的 新一代查詢語言

    作者:李捷 “ 學(xué)會選擇很難。學(xué)會正確選擇更難。而在一個充滿無限可能的世界里學(xué)會正確選擇則更難,也許是太難了。 ” 巴里-施瓦茨(Barry Schwartz)在《選擇的悖論--多就是少》(The Paradox of Choice -More is Less)一書中的一段話概括了為什么靈活性和可定制性過高會讓用戶

    2024年02月08日
    瀏覽(17)
  • ES搜索引擎入門+最佳實(shí)踐(九):項(xiàng)目實(shí)戰(zhàn)(二)--elasticsearch java api 進(jìn)行數(shù)據(jù)增刪改查

    ? ? ? ? 本篇是這個系列的最后一篇了,在這之前可以先看看前面的內(nèi)容: ES搜索引擎入門+最佳實(shí)踐(一)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實(shí)踐(二)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實(shí)踐(三)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實(shí)踐(四)_flame.liu的博客

    2024年02月12日
    瀏覽(28)
  • Java SpringBoot API 實(shí)現(xiàn)ES(Elasticsearch)搜索引擎的一系列操作(超詳細(xì))(模擬數(shù)據(jù)庫操作)

    Java SpringBoot API 實(shí)現(xiàn)ES(Elasticsearch)搜索引擎的一系列操作(超詳細(xì))(模擬數(shù)據(jù)庫操作)

    小編使用的是elasticsearch-7.3.2 基礎(chǔ)說明: 啟動:進(jìn)入elasticsearch-7.3.2/bin目錄,雙擊elasticsearch.bat進(jìn)行啟動,當(dāng)出現(xiàn)一下界面說明,啟動成功。也可以訪問http://localhost:9200/ 啟動ES管理:進(jìn)入elasticsearch-head-master文件夾,然后進(jìn)入cmd命令界面,輸入npm?run?start?即可啟動。訪問http

    2024年02月04日
    瀏覽(34)
  • 使用Logstash同步mysql數(shù)據(jù)到Elasticsearch(親自踩坑)_將mysql中的數(shù)據(jù)導(dǎo)入es搜索引擎利用logstash(1)

    使用Logstash同步mysql數(shù)據(jù)到Elasticsearch(親自踩坑)_將mysql中的數(shù)據(jù)導(dǎo)入es搜索引擎利用logstash(1)

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新大數(shù)據(jù)全套學(xué)習(xí)資料》,

    2024年04月28日
    瀏覽(26)
  • ElasticSearch內(nèi)容分享(四):ES搜索引擎

    ElasticSearch內(nèi)容分享(四):ES搜索引擎

    目錄 ES搜索引擎 1. DSL設(shè)置查詢條件 1.1 DSL查詢分類 1.2 全文檢索查詢 1.2.1 使用場景 1.2.2 match查詢 1.2.3 mulit_match查詢 1.3 精準(zhǔn)查詢 1.3.1 term查詢 1.3.2 range查詢 1.4 地理坐標(biāo)查詢 1.4.1 矩形范圍查詢 1.4.2 附近(圓形)查詢 1.5 復(fù)合查詢 1.5.0 復(fù)合查詢歸納 1.5.1 相關(guān)性算分 1.5.2 算分函數(shù)查

    2024年02月05日
    瀏覽(25)
  • ElasticSearch第三講:ES詳解 - Elastic Stack生態(tài)和場景方案

    ElasticSearch第三講:ES詳解 - Elastic Stack生態(tài)和場景方案

    本文是ElasticSearch第三講,在了解ElaticSearch之后,我們還要了解Elastic背后的生態(tài) 即我們 常說的ELK ;與此同時,還會給你展示ElasticSearch的 案例場景 ,讓你在學(xué)習(xí)ES前對它有個全局的印象。 Beats + Logstash + ElasticSearch + Kibana 如下是我從官方博客中找到圖,這張圖展示了ELK生態(tài)以

    2024年02月07日
    瀏覽(28)
  • 搜索引擎elasticsearch :安裝elasticsearch (包含安裝組件kibana、IK分詞器、部署es集群)

    搜索引擎elasticsearch :安裝elasticsearch (包含安裝組件kibana、IK分詞器、部署es集群)

    kibana可以幫助我們方便地編寫DSL語句,所以還要裝kibana 因?yàn)槲覀冞€需要部署kibana容器,因此需要讓es和kibana容器互聯(lián)。這里先創(chuàng)建一個網(wǎng)絡(luò): 這里我們采用elasticsearch的7.12.1版本的鏡像,這個鏡像體積非常大,接近1G。不建議大家自己pull。 課前資料提供了鏡像的tar包: 大家將

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包