最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python連接和操作Elasticsearch的詳細(xì)指南

 更新時(shí)間:2024年12月09日 10:21:41   作者:CoderJia_  
Elasticsearch 是一個(gè)強(qiáng)大的搜索引擎,廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ)和搜索場(chǎng)景,通過(guò) Python,我們可以方便地與 Elasticsearch 進(jìn)行交互,本文將詳細(xì)介紹如何在本地使用 Python 連接到服務(wù)器上的 Elasticsearch,并進(jìn)行基本的操作,需要的朋友可以參考下

一、服務(wù)器端配置

在開(kāi)始之前,確保你的 Elasticsearch 服務(wù)已經(jīng)在服務(wù)器上正確安裝和配置。

ES

以下是一些基本的配置步驟:

1. 修改 Elasticsearch 配置文件

找到 Elasticsearch 的配置文件 elasticsearch.yml,并進(jìn)行如下修改,以允許遠(yuǎn)程訪問(wèn):

network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

2. 開(kāi)放防火墻端口

確保服務(wù)器的防火墻已經(jīng)開(kāi)放了 Elasticsearch 的默認(rèn)端口 9200。如果你使用的是云服務(wù)器,也需要在安全組中開(kāi)放該端口。

你可以通過(guò)在瀏覽器中輸入 http://<你的服務(wù)器IP>:9200 來(lái)測(cè)試是否能夠正常訪問(wèn) Elasticsearch。如果配置正確,你應(yīng)該能看到如下 Elasticsearch 的歡迎頁(yè)面。

歡迎頁(yè)面

二、本地 Python 連接 Elasticsearch

在確保服務(wù)器端配置無(wú)誤后,接下來(lái)我們?cè)诒镜厥褂?Python 連接到 Elasticsearch。首先,你需要安裝 elasticsearch Python 客戶端庫(kù):

pip install elasticsearch

1. 連接 Elasticsearch

以下是連接到 Elasticsearch 的示例代碼:

from elasticsearch import Elasticsearch

# 連接到 Elasticsearch,替換為實(shí)際的 IP 地址和密碼
es = Elasticsearch('http://192.168.111.199:9200', basic_auth=('elastic', 'Elastic_j625sz'))

# 檢查連接
if es.ping():
    print('連接成功')
else:
    print('連接失敗')

在上述代碼中,basic_auth 參數(shù)用于傳遞用戶名和密碼。如果你的 Elasticsearch 沒(méi)有設(shè)置密碼,可以省略該參數(shù)。

image-kkdu.png

2. 索引操作

# 創(chuàng)建索引  
es.indices.create(index="my_index")  

# 刪除索引  
es.indices.delete(index="my_index")  

# 檢查索引是否存在  
es.indices.exists(index="my_index")

索引操作

3. 文檔操作

連接成功后,我們可以開(kāi)始進(jìn)行數(shù)據(jù)存儲(chǔ)和搜索操作。以下是一個(gè)創(chuàng)建索引并插入數(shù)據(jù)的示例:

    # 添加文檔
    doc1 = {
        "title": "測(cè)試文檔1",
        "content": "這是一個(gè)測(cè)試文檔1",
        "timestamp": "2024-12-07"
    }
    doc2 = {
        "title": "測(cè)試文檔2",
        "content": "這是一個(gè)測(cè)試文檔2",
        "timestamp": "2024-12-01"
    }
    # 指定ID插入
    es.index(index="my_index", id="1", document=doc1)
    # 自動(dòng)生成ID插入
    es.index(index="my_index", document=doc2)

    # 獲取文檔
    result = es.get(index="my_index", id="1")
    print(result)

    # 更新文檔
    update_doc = {
        "doc": {
            "title": "更新后的標(biāo)題"
        }
    }
    es.update(index="my_index", id="1", body=update_doc)
    print(es.get(index="my_index", id="1"))

    # 刪除文檔
    es.delete(index="my_index", id="1")

文檔操作

4. 搜索內(nèi)容

接下來(lái),我們可以通過(guò)搜索來(lái)查找我們存儲(chǔ)的數(shù)據(jù)。

在這之前,定義一個(gè)打印文檔的方法:

def print_doc(result):
    for hit in result['hits']['hits']:
        print(f"文檔ID: {hit['_id']}")
        print(f"得分: {hit['_score']}")
        print(f"文檔內(nèi)容: {json.dumps(hit['_source'], indent=2, ensure_ascii=False)}")
        print("-" * 50)

下面是常用的搜索方式:

    # 簡(jiǎn)單搜索
    query = {
        "query": {
            "match": {
                "title": "測(cè)試"
            }
        }
    }
    result = es.search(index="my_index", body=query)
    print_doc(result)

    # 復(fù)雜搜索(bool查詢)
    query = {
        "query": {
            "bool": {
                "must": [
                    {"match": {"title": "測(cè)試"}},
                    {"range": {"timestamp": {"gte": "2024-01-01"}}}
                ]
            }
        }
    }
    result = es.search(index="my_index", body=query)
    print_doc(result)

    # 分頁(yè)查詢
    query = {
        "query": {"match_all": {}},
        "from": 0,  # 從第幾條開(kāi)始
        "size": 10  # 返回多少條
    }
    result = es.search(index="my_index", body=query)
    print_doc(result)

在這個(gè)示例中,我們搜索了包含“測(cè)試”這個(gè)詞的文檔,并打印出搜索結(jié)果。

搜索內(nèi)容

5. 聚合查詢

# 聚合查詢示例  
query = {  
    "aggs": {  
        "popular_titles": {  
            "terms": {  
                "field": "title.keyword",  
                "size": 10  
            }  
        }  
    }  
}  
result = es.search(index="my_index", body=query)

聚合查詢

6. 批量操作

# 批量插入  
actions = [  
    {"_index": "my_index", "_source": {"title": "文檔1"}},  
    {"_index": "my_index", "_source": {"title": "文檔2"}},  
]  
from elasticsearch.helpers import bulk  
bulk(es, actions)

批量操作

三、注意事項(xiàng)

在使用 Elasticsearch 時(shí),有幾個(gè)注意事項(xiàng)需要牢記:

  1. 確保 Elasticsearch 服務(wù)正在運(yùn)行:在進(jìn)行任何操作之前,確保 Elasticsearch 服務(wù)已經(jīng)啟動(dòng)。
  2. 檢查網(wǎng)絡(luò)連接:確保本地機(jī)器與服務(wù)器之間的網(wǎng)絡(luò)連接暢通。
  3. 認(rèn)證信息:如果 Elasticsearch 配置了認(rèn)證,連接時(shí)必須提供正確的用戶名和密碼。
  4. 安全措施:在生產(chǎn)環(huán)境中,建議配置合適的安全措施,例如使用 HTTPS 和防火墻規(guī)則。
  5. 記得在完成操作后關(guān)閉連接:es.close()

四、故障排除

如果在連接或操作 Elasticsearch 時(shí)遇到問(wèn)題,可以嘗試以下方法進(jìn)行排查:

  • 使用 telnet 測(cè)試端口連通性:
telnet <你的服務(wù)器IP> 9200
  • 檢查 Elasticsearch 的日志文件,查看是否有錯(cuò)誤信息。
  • 確認(rèn) elasticsearch.yml 配置文件中的設(shè)置是否正確,并重啟 Elasticsearch 服務(wù)以應(yīng)用更改。

結(jié)論

通過(guò)以上步驟,你應(yīng)該能夠成功使用 Python 連接到 Elasticsearch,并進(jìn)行基本的文檔存儲(chǔ)和搜索操作。Elasticsearch 提供了強(qiáng)大的搜索能力,結(jié)合 Python 的靈活性,可以幫助你構(gòu)建高效的數(shù)據(jù)檢索系統(tǒng)。希望這篇文章能幫助你更好地理解如何使用 Python 操作 Elasticsearch。

以上就是Python連接和操作Elasticsearch的詳細(xì)指南的詳細(xì)內(nèi)容,更多關(guān)于Python連接和操作Elasticsearch的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • numpy中的nan和inf,及其批量判別、替換方式

    numpy中的nan和inf,及其批量判別、替換方式

    在Numpy中,NaN表示非數(shù)值,Inf表示無(wú)窮大,NaN與任何值計(jì)算都是NaN,Inf與0相乘是NaN,其余情況下與Inf運(yùn)算仍為Inf,可以使用np.isnan(), np.isinf(), np.isneginf(), np.isposinf(), np.isfinite()等函數(shù)進(jìn)行批量判別,返回布爾值數(shù)組
    2024-09-09
  • Python修改列表元素有哪些方法總結(jié)

    Python修改列表元素有哪些方法總結(jié)

    在Python中列表是一種可變序列,可以存儲(chǔ)任意類(lèi)型的元素,而元組是一種不可變序列,也可以存儲(chǔ)各種類(lèi)型的元素,下面這篇文章主要給大家介紹了關(guān)于Python修改列表元素有哪些方法的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • python獲取linux和windows系統(tǒng)指定接口的IP地址的步驟及代碼

    python獲取linux和windows系統(tǒng)指定接口的IP地址的步驟及代碼

    這篇文章主要介紹了python獲取linux和windows系統(tǒng)指定接口的IP地址,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Python語(yǔ)法學(xué)習(xí)之進(jìn)程的創(chuàng)建與常用方法詳解

    Python語(yǔ)法學(xué)習(xí)之進(jìn)程的創(chuàng)建與常用方法詳解

    本文我們將學(xué)習(xí)一下在?Python?中去創(chuàng)建并使用多進(jìn)程的方法,可以通過(guò)創(chuàng)建多個(gè)進(jìn)程來(lái)幫助我們提高腳本執(zhí)行的效率,感興趣的可以了解一下
    2022-04-04
  • 教你怎么用Python實(shí)現(xiàn)自動(dòng)生日祝福

    教你怎么用Python實(shí)現(xiàn)自動(dòng)生日祝福

    這篇文章主要介紹了教你怎么用Python實(shí)現(xiàn)自動(dòng)生日祝福,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python中count函數(shù)簡(jiǎn)單用法

    python中count函數(shù)簡(jiǎn)單用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中count函數(shù)簡(jiǎn)單用法以及相關(guān)實(shí)例,需要的朋友們學(xué)習(xí)下。
    2020-01-01
  • Python3如何在Windows和Linux上打包

    Python3如何在Windows和Linux上打包

    這篇文章主要介紹了Python3如何在Windows和Linux上打包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • PyInstaller常用打包命令舉例詳解

    PyInstaller常用打包命令舉例詳解

    使用PyInstaller你可以方便地將Python程序打包成可執(zhí)行文件,讓你的程序更容易分享和分發(fā),這篇文章主要給大家介紹了關(guān)于PyInstaller常用打包命令的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Python實(shí)現(xiàn)批量獲取當(dāng)前文件夾下的文件名

    Python實(shí)現(xiàn)批量獲取當(dāng)前文件夾下的文件名

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量獲取當(dāng)前文件夾下的文件名,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Python設(shè)計(jì)模式之職責(zé)鏈模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之職責(zé)鏈模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之職責(zé)鏈模式,結(jié)合具體實(shí)例形式分析了Python責(zé)任鏈模式的概念、原理、定義與使用方法,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

都匀市| 台南县| 县级市| 南江县| 盐津县| 深水埗区| 青岛市| 进贤县| 广东省| 綦江县| 松桃| 大连市| 南宁市| 克东县| 上犹县| 茶陵县| 南汇区| 和静县| 新邵县| 兴安盟| 新晃| 藁城市| 青川县| 固镇县| 香港 | 明水县| 石楼县| 株洲县| 澳门| 齐齐哈尔市| 沈阳市| 茶陵县| 民丰县| 张家港市| 和政县| 红原县| 鄯善县| 普兰店市| 伊川县| 望都县| 邳州市|