这是 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
代表下一个主要版本)。预先感谢您的贡献!
麻省理工学院©弹性