Breaking changes from 7.xedit

This major release is a complete new PHP client for Elasticsearch. We build it from scratch! We tried to reduce the BC breaks as much as possible but there are some (big) differences:

Architectural changesedit

  • we changed the namespace, now everything is under Elastic\Elasticsearch
  • we used the elastic-transport-php library for HTTP communications;
  • we changed the Exception model, using the namespace Elastic\Elasticsearch\Exception. All the exceptions extends the ElasticsearchException interface, as in 7.x
  • we changed the response type of each endpoint using an Elasticsearch response class. This class wraps a PSR-7 response allowing the access of the body response as array or object. This means you can access the API response as in 7.x, no BC break here! :angel:
  • we changed the ConnectionPool in NodePool. The connection naming was ambigous since the objects are nodes (hosts)

Specific changesedit

The following functions has been removed:

  • ClientBuilder::getEndpoint()
  • ClientBuilder::getRegisteredNamespacesBuilders()
  • ClientBuilder::getRegisteredNamespacesBuilders()
  • ClientBuilder::defaultHandler()
  • ClientBuilder::multiHandler()
  • ClientBuilder::singleHandler()
  • ClientBuilder::setConnectionFactory()
  • ClientBuilder::setConnectionPool(), you can use ClientBuilder::setNodePool instead
  • ClientBuilder::setEndpoint()
  • ClientBuilder::registerNamespace()
  • ClientBuilder::setTransport(), you can specify an HTTP PSR-18 client using ClientBuilder::setHttpClient()
  • ClientBuilder::setHandler()
  • ClientBuilder::setTracer(), you can only set a Logger using ClientBuilder::setLogger()
  • ClientBuilder::setSerializer()
  • ClientBuilder::setConnectionParams(), you can use ClientBuilder::setHttpClientOptions() instead
  • ClientBuilder::setSelector(), you can set a Selector using the setNodePool, see [here]( for more information
  • ClientBuilder::setSniffOnStart()
  • ClientBuilder::includePortInHostHeader()

We removed the special client parameter passed in $params endpoints. In details:

  • $params['client']['never_retry']
  • $params['client']['verbose']
  • $params['client']['port_in_header']
  • $params['client']['future'], you can set HTTP async using Client::setAsync(true)
  • $params['client']['ignore'], you can disable the Exception using Client::setResponseException(false)