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) 禁用异常