elastic/elasticsearch-php is a Data project on GitHub, written primarily in PHP. It has 5.3k stars. Official PHP client for Elasticsearch.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This is the official PHP client for
Elasticsearch.
You can run Elasticsearch and Kibana on your local machine using this command:
curl -fsSL https://elastic.co/start-local | sh
or sign-upfor a free trial of Elastic Cloud.
Contents
Installation
Connecting
Usage
Versioning
Backward Incompatible Changes
Mock the Elasticsearch client
FAQ
Contribute
License
Installation
Refer to the Installation section
of the getting started documentation.
Connecting
Refer to the Connecting section
of the getting started documentation.
Usage
The elasticsearch-php client offers 500+ endpoints for interacting with
Elasticsearch. A list of all these endpoints is available in the
official documentation
of Elasticsearch APIs.
Here we reported the basic operation that you can perform with the client:
index, search and delete.
Creating an index
Indexing a document
Getting documents
Searching documents
Updating documents
Deleting documents
Deleting an index
Versioning
This client is versioned and released alongside Elasticsearch server.
To guarantee compatibility, use the most recent version of this library within
the major version of the corresponding Enterprise Search implementation.
For example, for Elasticsearch 8.16, use 8.16 of this library or above, but
not 9.0.
Compatibility
The Elasticsearch client is compatible with currently maintained PHP versions.
Language clients are forward compatible; meaning that clients support
communicating with greater or equal minor versions of Elasticsearch without
breaking. It does not mean that the client automatically supports new features
of newer Elasticsearch versions; it is only possible after a release of a new
client version. For example, a 8.12 client version won't automatically support
the new features of the 8.13 version of Elasticsearch, the 8.13 client version
is required for that. Elasticsearch language clients are only backwards
compatible with default distributions and without guarantees made.
Elasticsearch Version
Elasticsearch-PHP Branch
Supported
main
main
9.x
9.x
9.x
8.x
8.x
8.x
Backward Incompatible Changes :boom:
The 9.0.0 version of elasticsearch-php contains the same architecture of 8.x.
It supports PSR-7 for HTTP messages and
PSR-18 for HTTP client communications.
We tried to avoid BC breaks for 9.x, here the main changes:
Compatibility with Elasticsearch 9.0: All changes and additions to Elasticsearch APIs for its 9.0 release are reflected in this release.
Serverless client merged in: the elastic/elasticsearch-serverless client is being deprecated, and its functionality has been merged back into this client. This should have zero impact on the way the client works by default. If an endpoint is available in serverless, the PHP function will contains a @group serverless phpdoc attribute.
If you try to use an endpoint that is not available in serverless you will get a 410 HTTP error with a message as follows:
"this endpoint exists but is not available when running in serverless mode".
The 9.0.0 client can recognize that it is communicating with a serverless instance if you are using a URL managed by Elastic (e.g. *.elastic.cloud).
If you are using a proxy, the client will be able to recognize that the host is serverless from the first response. Alternatively, you can explicitly indicate that the host is serverless using the Client::setServerless(true) function (false by default).
New transport library with PSR-18 cURL client as default: we've removed the Guzzle dependency from the client. By default, the built-in cURL-based HTTP client will be used if no other PSR-18 compatible clients are detected. See release 9.0.0 of elastic-transport-php.
You can have a look at the BREAKING_CHANGES file for more
information.
Mock the Elasticsearch client
If you need to mock the Elasticsearch client you just need to mock a
PSR-18 HTTP Client.
For instance, you can use the
php-http/mock-client as follows:
use Elastic\Elasticsearch\ClientBuilder;
use Elastic\Elasticsearch\Response\Elasticsearch;
use Http\Mock\Client;
use Nyholm\Psr7\Response;
$mock = new Client(); // This is the mock client
$client = ClientBuilder::create()
->setHttpClient($mock)
->build();
// This is a PSR-7 response
$response = new Response(
200,
[Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME],
'This is the body!'
);
$mock->addResponse($response);
$result = $client->info(); // Just calling an Elasticsearch endpoint
echo $result->asString(); // This is the body!
We are using the ClientBuilder::setHttpClient() to set the mock client.
You can specify the response that you want to have using the
addResponse($response) function. As you can see the $response is a PSR-7
response object. In this example we used the Nyholm\Psr7\Response object from
the nyholm/psr7 project. If you are using
PHPUnit you can even mock the ResponseInterface as
follows:
Notice: we added a special header in the HTTP response. This is the product
check header, and it is required for guarantee that elasticsearch-php is
communicating with an Elasticsearch server 8.0+.
For more information you can read the
Mock client
section of PHP-HTTP documentation.
FAQ 🔮
Where do I report issues with the client?
If something is not working as expected, please open an
issue.
Where else can I go to get help?
You can checkout the
Elastic community discuss forums.
Contribute 🚀
We welcome contributors to the project. You can refer to the CONTRIBUTING
guide for more information.
How active is development on elastic/elasticsearch-php?
The most recent commit recorded on elastic/elasticsearch-php was 5 days ago, based on the GitHub push timestamp. The repository has 960 forks — one of the better signals of community interest.
How does elastic/elasticsearch-php compare to other Data projects?
elastic/elasticsearch-php is tracked by TopGit in the Data category, with 5.3k GitHub stars and written in PHP. Browse the Data topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does elastic/elasticsearch-php have?
elastic/elasticsearch-php has 5.3k GitHub stars — refresh the page for the live number, or check github.com/elastic/elasticsearch-php. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What is elastic/elasticsearch-php?
elastic/elasticsearch-php (elastic/elasticsearch-php) is a PHP project on GitHub. From the project's own README: Official PHP client for Elasticsearch.
What language is elastic/elasticsearch-php written in?
elastic/elasticsearch-php is written primarily in PHP. GitHub's language field is based on the largest share of bytes in the default branch.
What topics is elastic/elasticsearch-php associated with?
GitHub's repository topics for elastic/elasticsearch-php: "client", "elasticsearch", "php". TopGit's editorial category is Data.
Why is elastic/elasticsearch-php categorized under Data?
TopGit places elastic/elasticsearch-php in the Data category based on its GitHub topics and description (tagged: "client", "elasticsearch", "php"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Is elasticsearch-php worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of elasticsearch-php.