7.x 版本的重大变更

编辑

7.x 版本的重大变更

编辑

此主要版本是 Elasticsearch 的一个全新的 PHP 客户端。我们从头开始构建它!我们尽量减少了向后兼容性中断,但仍然存在一些(重大)差异。

架构变更

编辑
  • 我们更改了命名空间,现在所有内容都在 Elastic\Elasticsearch 下。
  • 我们使用 elastic-transport-php 库进行 HTTP 通信;
  • 我们更改了 Exception 模型,使用命名空间 Elastic\Elasticsearch\Exception。所有异常都扩展了 ElasticsearchException 接口,与 7.x 版本相同。
  • 我们使用 Elasticsearch 响应类更改了每个端点的响应类型。此类包装了 PSR-7 响应,允许访问正文响应作为数组或对象。这意味着您可以像在 7.x 版本中一样访问 API 响应,此处没有向后兼容性中断!: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) 禁用异常。