這是 Elasticsearch 的官方 PHP 客戶端。
下載最新版本的 Elasticsearch或註冊Elastic Cloud 免費試用版。
請參閱入門文件的安裝部分。
請參閱入門文件的連接部分。
elasticsearch-php
客戶端提供 400 多個用於與 Elasticsearch 互動的端點。 Elasticsearch API 的官方文件中提供了所有這些端點的清單。
這裡我們報告了您可以使用客戶端執行的基本操作:索引、搜尋和刪除。
該客戶端與 Elasticsearch 伺服器一起進行版本控制和發布。
為了確保相容性,請在對應企業搜尋實作的主要版本中使用該程式庫的最新版本。
例如,對於 Elasticsearch 7.16
,請使用此程式庫的7.16
或更高版本,但不能使用8.0
。
Elasticsearch 用戶端與目前維護的 PHP 版本相容。
語言客戶端向前相容;這意味著客戶端支援與更高或同等次要版本的 Elasticsearch 進行通訊而不會中斷。這並不意味著客戶端自動支援較新 Elasticsearch 版本的新功能;只有在發布新的客戶端版本後才有可能。例如,8.12 用戶端版本不會自動支援 8.13 版本 Elasticsearch 的新功能,需要 8.13 用戶端版本。 Elasticsearch 語言用戶端僅向後相容於預設發行版,且不做任何保證。
彈性搜尋版本 | Elasticsearch-PHP分支 | 支援 |
---|---|---|
主要的 | 主要的 | |
8.x | 8.x | 8.x |
7.x | 7.x | 7.17 |
與 7.x 相比, elasticsearch-php
8.0.0 版本包含一個新的實作。它支援用於 HTTP 訊息的 PSR-7 和用於 HTTP 客戶端通訊的 PSR-18。
我們嘗試在7.x
中盡可能減少 BC 中斷,但存在一些(很大)差異:
ElasticElasticsearch
下ElasticElasticsearchException
更改了Exception
模型。所有異常都擴展了ElasticsearchException
接口,如 7.x 中所示NodePool
中的ConnectionPool
。 connection
命名不明確,因為物件是節點(主機)您可以查看 BREAKING_CHANGES 檔案以獲取更多資訊。
如果您需要模擬 Elasticsearch 用戶端,您只需要模擬 PSR-18 HTTP 用戶端。
例如,您可以使用 php-http/mock-client,如下所示:
use Elastic Elasticsearch ClientBuilder ;
use Elastic Elasticsearch Response Elasticsearch ;
use Http Mock Client ;
use Nyholm Psr7 Response ;
$ mock = new Client (); // This is the mock client
$ client = ClientBuilder:: create ()
-> setHttpClient ( $ mock )
-> build ();
// This is a PSR-7 response
$ response = new Response (
200 ,
[Elasticsearch:: HEADER_CHECK => Elasticsearch:: PRODUCT_NAME ],
' This is the body! '
);
$ mock -> addResponse ( $ response );
$ result = $ client -> info (); // Just calling an Elasticsearch endpoint
echo $ result -> asString (); // This is the body!
我們使用ClientBuilder::setHttpClient()
來設定模擬客戶端。您可以使用addResponse($response)
函式指定您想要的回應。正如您所看到的, $response
是一個 PSR-7 回應物件。在此範例中,我們使用 nyholm/psr7 專案中的NyholmPsr7Response
物件。如果您使用 PHPUnit,您甚至可以模擬ResponseInterface
,如下所示:
$ response = $ this -> createMock ( ' PsrHttpMessageResponseInterface ' );
注意:我們在 HTTP 回應中新增了一個特殊的標頭。這是產品檢查標頭,它是保證elasticsearch-php
與 Elasticsearch 伺服器 8.0+ 通訊所必需的。
有關更多信息,您可以閱讀 PHP-HTTP 文件的模擬客戶端部分。
如果某些內容未如預期運作,請提出問題。
您可以查看 Elastic 社群討論論壇。
我們歡迎對該專案的貢獻者。在開始之前,一些有用的信息...
8.0
版本的 PR,請使用8.0
分支,對於8.1
請使用8.1
分支,依此類推。master
發送PR,除非你想為客戶端的開發版本做出貢獻( master
代表下一個主要版本)。預先感謝您的貢獻!
麻省理工學院©彈性