7.x 版本的重大变更
编辑7.x 版本的重大变更编辑
此主要版本是 Elasticsearch 的全新 PHP 客户端。我们从头开始构建它!我们尽力减少 BC 冲突,但仍然存在一些(重大)差异。
架构变更编辑
- 我们更改了命名空间,现在所有内容都在
Elastic\Elasticsearch
下。 - 我们使用 elastic-transport-php 库进行 HTTP 通信;
- 我们更改了
Exception
模型,使用命名空间Elastic\Elasticsearch\Exception
。所有异常都扩展了ElasticsearchException
接口,与 7.x 版本相同。 - 我们使用 Elasticsearch 响应类更改了每个端点的响应类型。此类包装了 PSR-7 响应,允许将主体响应作为数组或对象访问。这意味着您可以像在 7.x 版本中一样访问 API 响应,这里没有 BC 冲突!:angel
- 我们将
ConnectionPool
更改为NodePool
。由于对象是节点(主机),因此connection
命名存在歧义。
特定变更编辑
以下函数已被删除
-
ClientBuilder::getEndpoint()
-
ClientBuilder::getRegisteredNamespacesBuilders()
-
ClientBuilder::getRegisteredNamespacesBuilders()
-
ClientBuilder::defaultHandler()
-
ClientBuilder::multiHandler()
-
ClientBuilder::singleHandler()
-
ClientBuilder::setConnectionFactory()
-
ClientBuilder::setConnectionPool()
,您可以使用ClientBuilder::setNodePool
代替 -
ClientBuilder::setEndpoint()
-
ClientBuilder::registerNamespace()
-
ClientBuilder::setTransport()
,您可以使用ClientBuilder::setHttpClient()
指定 HTTP PSR-18 客户端 -
ClientBuilder::setHandler()
-
ClientBuilder::setTracer()
,您只能使用ClientBuilder::setLogger()
设置日志记录器 -
ClientBuilder::setSerializer()
-
ClientBuilder::setConnectionParams()
,您可以使用ClientBuilder::setHttpClientOptions()
代替 -
ClientBuilder::setSelector()
,您可以使用setNodePool
设置Selector
,有关更多信息,请参见 此处 -
ClientBuilder::setSniffOnStart()
-
ClientBuilder::includePortInHostHeader()
我们删除了在 $params
端点中传递的特殊 client
参数。具体来说
-
$params['client']['never_retry']
-
$params['client']['verbose']
-
$params['client']['port_in_header']
-
$params['client']['future']
,您可以使用Client::setAsync(true)
设置 HTTP 异步 -
$params['client']['ignore']
,您可以使用Client::setResponseException(false)
禁用异常