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 更改为 NodePoolconnection 命名是模糊的,因为对象是节点(主机)

具体更改

编辑

以下函数已被删除

  • 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() 设置 Logger
  • 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) 禁用异常