亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)文章

最新評(píng)論