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

Elasticsearch:升級到 elasticsearch-py 8.x 的 10 個理由

這篇具有很好參考價值的文章主要介紹了Elasticsearch:升級到 elasticsearch-py 8.x 的 10 個理由。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者:來自 Elastic 公司?Quentin_Pradet

Elasticsearch:升級到 elasticsearch-py 8.x 的 10 個理由,Elasticsearch,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,python,全文檢索,數(shù)據(jù)庫

早在 2022 年 2 月,當 Elasticsearch 8.0 發(fā)布時,Python 客戶端也發(fā)布了 8.0 版本。 它是 7.x 客戶端的部分重寫,并附帶了許多不錯的功能(概述如下),但也有棄用警告和重大更改。 如今,7.17 版客戶端仍然相對受歡迎,每月下載量超過 100 萬次,約占 8.x 下載量的 50%。

Elasticsearch:升級到 elasticsearch-py 8.x 的 10 個理由,Elasticsearch,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,python,全文檢索,數(shù)據(jù)庫

作為 Elasticsearch Python 客戶端的新維護者,我希望我們的社區(qū)能夠從我們在客戶端中所做的改進中受益,通過幫助所有 elasticsearch-py 用戶:

  • 幫助 7.17 用戶遷移到 8.x,
  • 幫助 8.x 用戶利用新功能。

根據(jù)我作為 urllib3 維護者的經(jīng)驗,我知道投資 urllib3 2.0 遷移指南?并幫助用戶遷移是有回報的。 同樣,我們現(xiàn)在正在努力通過刪除棄用警告和重大更改來使 elasticsearch-py 8.x 更易于使用。 這篇文章重點介紹了升級到 8.x 的充分理由:這些理由在近兩年內(nèi)都是如此,但最近的理由也是如此。 順便說一句,如果你已經(jīng)確信,請查看我們的遷移指南(如果你遇到困難,請務必聯(lián)系我們?。?/p>

Migrating to 8.0 | Elasticsearch Python Client [8.11] | Elastic文章來源地址http://www.zghlxwxcb.cn/news/detail-804800.html

話不多說,以下是使用 elasticsearch-py 8.x 的十個理由。

1. 支持最新的 Elasticsearch API

Elasticsearch 8 是 Elasticsearch 的最佳版本,全面進行了許多改進,并大大增加了可擴展性。更重要的是,對于我們對 Python 客戶端的討論,添加了各種新的 API:

  • 使用 _search API 的 knn 選項進行向量搜索(8.5,替換 8.0 中引入的 _knn_search API)
  • 執(zhí)行模型推理 API (8.11) 和訓練模型 API (8.5)
  • 搜索應用程序 (8.8)、查詢規(guī)則 (8.10) 和同義詞 API (8.10)

由于客戶端是根據(jù) Elasticsearch 規(guī)范生成的,因此可以保證獲得最新、最好的 API。

2. Elasticsearch DSL 客戶端 8.x

Elasticsearch DSL 客戶端 ?是一個高級庫,其目的是幫助以更簡潔的方式編寫和運行針對 Elasticsearch 的查詢。 使用與之前文章相同的 christmas_characters 索引作為示例:

response = client.search(
    index="christmas_characters",
    query={
        "bool": {
            "must": [{"match": {"behavior": "good"}}]
        }
    }
)

for hit in response['hits']['hits']:
    print(hit['_score'], hit['_source']['title'])

變成:

s = Search(using=client, index="christmas_characters").query("match", behavior="good")

for hit in s.execute():
    print(hit.meta.score, hit.title)

你要么喜歡它的簡潔性,要么討厭學習新的 DSL,但這個客戶端非常受歡迎,每月下載量超過 300 萬次,并擁有專門的用戶群。 它過去維護得很差,一直停留在 7.4.1 版本,但我在 9 月份發(fā)布了 8.9.0 版本,這是第一個與主要 Python 客戶端版本 8 兼容的版本。

我致力于維護它,并于上個月發(fā)布了 8.11.0,以支持 Python 3.12 并允許折疊(collapsing queries)查詢(相關 GitHub 問題已累積 38 票!)。

3.?種類型提示和更多 Pythonic API

從 Elasticsearch Python 客戶端的早期(早在 2013 年 7 月起!)開始,body 參數(shù)就是為接受它的請求指定請求正文的方法。 使用 body 的 API 調(diào)用如下所示:

es.search(
    index="christmas_characters",
    body={
        "query": {"match_all": {}},
        "size": 50,
    }
)

然而,這個參數(shù)是一個無類型的 Python 字典,沒有經(jīng)過客戶端驗證,這意味著在將請求發(fā)送到服務器之前你無法判斷你的請求是否正確。 但你不想了解生產(chǎn)中的基本問題! 因此,elasticsearch-py 8.0 利用 Elasticsearch 規(guī)范引入了更好的 API,該規(guī)范提供了每個 API 的完整類型。 第一層主體鍵可以使用 Python 參數(shù)指定:

es.search(
    index="christmas_characters",
    query={"match_all": {}},
    size=50,
)

這具有多種優(yōu)點,包括更好的自動完成和類型檢查。 例如,如果 size 不是整數(shù),mypy 將引發(fā)錯誤。 因為我們意識到我們可以將 body unpack?為類型化參數(shù),如下所示:

es.search(
    index="christmas_characters",
    **{"query": {"match_all": {}}, "size": 50}
)

我們決定在 elasticsearch-py 8.0 中完全棄用 body 參數(shù)。

4. 恢復 body 參數(shù)

然而,棄用 body 有以下缺點:

  • 過去十年編寫的許多代碼現(xiàn)在都觸發(fā)了棄用警告
  • 未知參數(shù)(例如 sub_searches 或 Elasticsearch 規(guī)范中的無意遺漏)被拒絕,導致查詢徹底失敗,不必要地強制使用原始請求。
  • 諸如傳遞已編碼主體以避免支付序列化 JSON 成本之類的優(yōu)化已不再可能。

客戶端的原作者 Honza Král 指出了這些問題 ,我們決定讓 body 與新 API 一起像以前一樣工作,沒有任何警告。 這將在 elasticsearch-py 8.12 中提供,我們希望這將有助于 elasticsearch-py 8.x 的采用。

5. 記錄調(diào)試請求

elasticsearch-py 8.x 客戶端基于 elastic-transport 庫,可以作為不同客戶端的基礎。 該庫引入了一個非常有用的功能來調(diào)試請求和響應,通過調(diào)用 elastic_transport.debug_logging() 來啟用。

import elastic_transport
from elasticsearch import Elasticsearch

# In this example we're debugging an Elasticsearch client:
client = Elasticsearch(...)
# Use `elastic_transport.debug_logging()` before the request
elastic_transport.debug_logging()

client.search(
    index="christmas_characters",
    query={
        "bool": {
            "must": [{"match": {"behavior": "good"}}]
        }
    }
)

上述腳本將輸出以下日志:

[2021-11-23T14:11:20] > POST /example-index/_search?typed_keys=true HTTP/1.1
> Accept: application/json
> Accept-Encoding: gzip
> Authorization: Basic <hidden>
> Connection: keep-alive
> Content-Encoding: gzip
> Content-Type: application/json
> User-Agent: elastic-transport-python/8.11.0+dev
> X-Elastic-Client-Meta: es=8.11.0p,py=3.12.0,t=8.11.0p,ur=2.1.0
> {"query":{"match":{"text-field":"value"}}}
< HTTP/1.1 200 OK
< Content-Encoding: gzip
< Content-Length: 165
< Content-Type: application/json;charset=utf-8
< Date: Tue, 12 Dec 2022 20:11:20 GMT
< X-Cloud-Request-Id: ctSE59hPSCugrCPM4A2GUQ
< X-Elastic-Product: Elasticsearch
< X-Found-Handling-Cluster: 40c9b5837c8f4dd083f05eac950fd50c
< X-Found-Handling-Instance: instance-0000000001
< {"hits":{...}}

從我了解到這個功能的那天起,這個功能就成為了我開發(fā)工作流程的重要組成部分,現(xiàn)在我在其他客戶端中懷念它:它就是那么好!

6. 全鏈 SSL/TLS 指紋固定

當通過 HTTPS 與 Elasticsearch 通信時(這是從 Elasticsearch 8 開始的默認設置),客戶端需要能夠驗證服務器正在使用的證書,就像你的瀏覽器在獲取單詞之前必須驗證 discuss.elastic.co 的證書一樣 您當前正在閱讀。 這是通過跟蹤證書鏈直至根證書頒發(fā)機構(gòu)(根 CA)來實現(xiàn)的。 但是,該根 CA 不一定是已受信任的通用根 CA,而可能是整個公司使用的企業(yè)根 CA,甚至可能是 Elasticsearch 為單個集群生成的根 CA。

在這些情況下,有兩種方法可以正確驗證證書:

  1. 將相關的證書頒發(fā)機構(gòu)存儲在文件中,并配置 ca_certs 參數(shù)。 然而,存儲此文件需要額外的步驟,并且訪問公共證書并不總是那么容易。
  2. 指定集群中每個節(jié)點的 SSL 指紋,以確保每個節(jié)點的證書永遠不會改變。 但是,你需要為每個節(jié)點執(zhí)行此操作,這對于較大的集群來說在實踐中是不可能的。

值得慶幸的是,作為 Python 信任存儲工作的一部分,前 Elasticsearch Python 客戶端維護者 Seth Larson 意識到,使用 Python 3.10+ 私有 API ,可以固定根 CA 的指紋,從而允許驗證所有節(jié)點的證書,從而帶來 兩全其美的。 請參閱配置| Elasticsearch Python 客戶端 [8.11] | Elastic?適用于 Python 客戶端中有關 TLS 的所有選項。

7. options() API

在 elasticsearch-py 7.x中,客戶端 API 方法中允許使用每個請求選項,例如 api_key 和 ignore。 然而,這很令人困惑,因為它混合了傳輸級參數(shù)和 API 級參數(shù)。 現(xiàn)在已棄用,因為 elasticsearch-py 8.x 引入了 options() API,轉(zhuǎn)換:

client.search(index="christmas_characters", request_timeout=10)

為:

client.options(request_timeout=10).search(index="christmas_characters")

有關詳細信息,請參閱遷移指南。

8. 改進文檔

當前的主要焦點是改進 Python 客戶端的文檔。

API 參考按命名空間劃分,以減少類似名稱的 API(如 es.exists 和 es.indices.exists)之間的混淆。

它還包括內(nèi)聯(lián)類型提示:

Elasticsearch:升級到 elasticsearch-py 8.x 的 10 個理由,Elasticsearch,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,python,全文檢索,數(shù)據(jù)庫

最后,添加了 快速入門 和?交互式示例?頁面。

9.無服務器 - serverless

Elastic 的最新產(chǎn)品 Serverless 有一個專用的 Elasticsearch Python 客戶端 elasticsearch-serverless-python,其中僅包含 Serverless 支持的 API 和選項。

也就是說,默認的 Python 客戶端 elasticsearch-py 也支持 Serverless,這使得你可以輕松地使用現(xiàn)有代碼嘗試 Serverless!

10. 生成式人工智能

Elastic 在 Generative AI 方面投入了大量資金,Elasticsearch 是下載次數(shù)最多的向量數(shù)據(jù)庫! 最好的入門方式是 Elastic Search Labs。它包含適用于 elasticsearch-py 8.x 的每個用例的博客文章和 Python 筆記本。

就是這樣! 謝謝閱讀。 當你準備好升級時,遷移指南是最好的起點。

Migrating to 8.0 | Elasticsearch Python Client [8.11] | Elastic

到了這里,關于Elasticsearch:升級到 elasticsearch-py 8.x 的 10 個理由的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 謹慎升級spring-data-elasticsearch 4.4.2

    謹慎升級spring-data-elasticsearch 4.4.2

    在升級項目依賴時,發(fā)現(xiàn)目前用的spring-data-elasticsearch版本為4.3.2 對應spring-boot版本2.6.4 而目前最新的版本為4.4.2 對應spring-boot版本為2.7.3 就順手升級了下。觀看了下官方升級文檔 https://docs.spring.io/spring-data/elasticsearch/docs/4.4.2/reference/html/#elasticsearch-migration-guide-4.3-4.4 發(fā)現(xiàn)改動并

    2023年04月09日
    瀏覽(18)
  • windows10安裝ElasticSearch

    windows10安裝ElasticSearch

    一 安裝 Java環(huán)境 ElasticSearch使用Java開發(fā)的,依賴Java環(huán)境,安裝 ElasticSearch 之前,需要先安裝一個較新版本的 Java,jdk 1.8版本太低了,需要安裝jdk 11或更高版本。 Java安裝方法請參考 Java 15環(huán)境安裝 。 二 下載及安裝ElasticSearch (1)下載最新版本的ElasticSearch ElasticSearch官網(wǎng)下載

    2024年02月12日
    瀏覽(21)
  • ElasticSearch學習(十一)—— es7.2升級log4j版本

    下載log4j2.17 下載地址: Apache Logging Services https://logging.apache.org/ 查找es安裝目錄下需要替換的log4j文件 備份舊文件 將2.11.1文件替換為2.17.2 修改替換的文件權(quán)限 權(quán)限給到es用戶 重新啟動 啟動報錯 解決 修改elasticsearch.yml文件中的host 將默認的0.0.0.0修改為對應的服務器ip地址

    2023年04月09日
    瀏覽(27)
  • logstack 日志技術棧-05-windows10 安裝 Elasticsearch elasticsearch-8.11.1 實戰(zhàn)筆記

    訪問 Elasticsearch 下載頁面 解壓下載的壓縮文件到你選擇的目錄。 進入 Elasticsearch 目錄,運行 bin/elasticsearch.bat 啟動 Elasticsearch。 elaasticsearch的默認訪問路徑是localhost:9200,我們打開瀏覽器直接訪問即可。 如果訪問不了也沒關系,我們可以先修改配置文件之后再進行訪問。 注意

    2024年01月21日
    瀏覽(35)
  • SpringBoot : ch10 整合Elasticsearch

    SpringBoot : ch10 整合Elasticsearch

    歡迎閱讀本文,本文將介紹如何在Spring Boot應用程序中整合Elasticsearch。隨著信息量的不斷增加,對數(shù)據(jù)的高效管理和檢索變得尤為重要。Elasticsearch作為一個強大的開源搜索和分析引擎,為我們提供了一個靈活且高效的解決方案。 在本文中,我們將深入探討如何在Spring Boot項目

    2024年02月03日
    瀏覽(28)
  • 10倍提升效率,號稱取代Elasticsearch?

    10倍提升效率,號稱取代Elasticsearch?

    官網(wǎng) Manticore Search – easy-to-use open-source fast database for search 介紹 對于小型數(shù)據(jù)集,比Elasticsearch快15倍 對于中等大小的數(shù)據(jù),比Elasticsearch快5倍 對于大型數(shù)據(jù),比Elasticsearch快4倍 在單個服務器上進行數(shù)據(jù)導入時,最大吞吐量比Elasticsearch快最多2倍 主要特點 強大而快速的全文搜

    2024年02月13日
    瀏覽(18)
  • Elasticsearch 7.10.2 部署集群搭建

    Elasticsearch 7.10.2 部署集群搭建

    官方網(wǎng)站查看下載地址 Download Elasticsearch | Elastic 修改es配置 修改jvm相關配置 修改elasticsearch.yml #節(jié)點名字 node.name: node-2 #端口 http.port: 19202 #節(jié)點名字 node.name: node-3 #端口 http.port: 19203

    2024年02月14日
    瀏覽(38)
  • 使用近10年,說說向大家推薦Linux系統(tǒng)的理由

    使用近10年,說說向大家推薦Linux系統(tǒng)的理由

    使用linux已經(jīng)快十年了,一直想推薦身邊的使用linux,但是一直沒有分享。但是現(xiàn)在我想分享推薦了。下面我們一起聊聊為什么我向大家推薦linux。 為什么現(xiàn)在我想推薦了呢?是因為我自認為相對于同齡人來說,我使用桌面版的時間算是挺長的了,而且我也想糾正一部分人不看

    2024年02月10日
    瀏覽(18)
  • 知識篇 | 麒麟v10 下安裝Elasticsearch

    知識篇 | 麒麟v10 下安裝Elasticsearch

    最近因工作原因,和ES( Elasticsearch )接觸的比較多;ES之前了解過,不怎么熟悉,故打算系統(tǒng)學習之。 按照自己的學習慣例,一是了解主要概念,二是動手安裝一遍。 故,本文大綱為: 1.? 概念理解: 1)?ES是什么? 2)?ES發(fā)展史 3)?ES市場成熟度 2.? 安裝部署 1)?Linux下如何安

    2023年04月09日
    瀏覽(14)
  • Docker安裝ElasticSearch/ES 7.10.0

    Docker安裝ElasticSearch/ES 7.10.0

    TencentOS Server 3.1 Docker version 19.03.14, build 5eb3275d40 elasticsearch: 7.10.0 1. 安裝docker 安裝 docker 參考:【Centos 8】【Centos 7】安裝 docker 2. 搜索可以使用的鏡像。 3. 也可從docker hub上搜索鏡像。 docker hub,docker hub-stage。 4. 選擇合適的redis鏡像。 版本 拉取命令 最新版本 docker pull elastics

    2024年02月04日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包