elastic / app-search
Elastic App Search Official PHP Client
Installs: 217 937
Dependents: 5
Suggesters: 0
Security: 0
Stars: 51
Watchers: 21
Forks: 21
Open Issues: 8
Requires
- php: ^5.6|^7.0
- elastic/openapi-codegen: ^1.0.4
- psr/log: ^1.0.
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- overtrue/phplint: ^1.1
- phpunit/phpunit: ^5.6.0|^6.3.0
- squizlabs/php_codesniffer: ^3.4.0
- symfony/yaml: *
This package is auto-updated.
Last update: 2024-08-08 15:41:50 UTC
README
⚠️ This client is deprecated ⚠️
As of Enterprise Search version 7.13.0, we are directing users to the new Enterprise Search PHP Client and deprecating this client.
This client will be compatible with all Enterprise Search 7.x releases, but will not be compatible with 8.x releases. Our development effort on this project will be limited to bug fixes. All future enhancements will be focused on the Enterprise Search PHP Client.
Thank you! - Elastic
A first-party PHP client for building excellent, relevant search experiences with Elastic App Search.
Contents
Getting started 🐣
Using this client assumes that you have already an instance of Elastic App Search up and running.
You can find more information about Elastic App Search at : https://www.elastic.co/app-search.
You can install the client in your project by using composer:
composer require elastic/app-search
Versioning
This client is versioned and released alongside App Search.
To guarantee compatibility, use the most recent version of this library within the major version of the corresponding App Search implementation.
For example, for App Search 7.3
, use 7.3
of this library or above, but not 8.0
.
If you are using the SaaS version available on swiftype.com of App Search, you should use the version 7.5.x of the client.
Usage
Configuring the client
Basic client instantiation
To instantiate a new client you can use \Elastic\AppSearch\Client\ClientBuilder
:
$apiEndpoint = 'http://localhost:3002/'; $apiKey = 'private-XXXXXXXXXXXX'; $clientBuilder = \Elastic\AppSearch\Client\ClientBuilder::create($apiEndpoint, $apiKey); $client = $clientBuilder->build();
Notes:
-
The resulting client will be of type
\Elastic\AppSearch\Client\Client
-
You can find the API endpoint and your API key URL in the credentials sections of the App Search dashboard.
-
You can use any type of API Key (private, public or admin). The client will throw an exception if you try to execute an action that is not authorized for the key used.
Basic usage
Retrieve or create an engine
Most methods of the API require that you have access to an Engine.
To check if an Engine exists and retrieve its configuration, you can use the Client::getEngine
method :
$engine = $client->getEngine('my-engine');
If the Engine does not exists yet, you can create it by using the Client::createEngine
method :
$engine = $client->createEngine('my-engine', 'en');
The second parameter ($language
) is optional. Set it to null
to apply the universal
language.
Read more about language support.
Index some documents
You can use the Client::indexDocuments
method to index some documents into the Engine:
$documents = [ ['id' => 'first-document', 'name' => 'Document name', 'description' => 'Document description'], ['id' => 'other-document', 'name' => 'Other document name', 'description' => 'Other description'], ]; $indexingResults = $client->indexDocuments('my-engine', $documents);
The $indexingResults
array will contain the result of the indexation of each documents. You should always check the content of the result.
Read more about document indexing.
Search
You can use the Client::search
method to search in your Engine:
$searchParams = [ 'page' => ['current' => 1, 'size' => 10] ]; $searchResponse = $client->search('my-engine', 'search text', $searchParams);
If you want to match all documents you can use and empty search query ''
as second parameter ($queryText
).
The $searchRequestParams
parameter is optional and can be used to use advanced search features. Allowed params are :
The search response will contains at least a meta field and a results field as shown in this example:
[ 'meta' => [ 'warnings' => [], 'page' => [ 'current' => 1, 'total_pages' => 1, 'total_results' => 1, 'size' => 10 ], 'request_id' => 'feff7cf2359a6f6da84586969ef0ca89' ], 'results' => [ [ 'id' => ['raw' => 'first-document'], 'name' => ['raw' => 'Document name'], 'description' => ['raw' => ['Document description'] ] ] ] ]
Clients methods
Development
Code for the endpoints is generated automatically using a custom version of OpenAPI Generator.
To regenerate endpoints, use the docker laucher packaged in vendor/bin
:
./vendor/bin/elastic-openapi-codegen.sh
The custom generator will be built and launched using the following Open API spec file : resources/api/api-spec.yml
.
You can then commit and PR the modified api-spec file and your endpoints code files.
The client class and readme may be changed in some cases. Do not forget to include them in your commit!
FAQ 🔮
Where do I report issues with the client?
If something is not working as expected, please open an issue.
Where can I find the full API documentation ?
Your best bet is to read the documentation.
Where else can I go to get help?
You can checkout the Elastic community discuss forums.
Contribute 🚀
We welcome contributors to the project. Before you begin, a couple notes...
- Before opening a pull request, please create an issue to discuss the scope of your proposal.
- Please write simple code and concise documentation, when appropriate.
License 📗
Thank you to all the contributors!