{"id":15044592,"url":"https://github.com/elastic/app-search-php","last_synced_at":"2025-03-31T07:09:10.910Z","repository":{"id":50979809,"uuid":"190384364","full_name":"elastic/app-search-php","owner":"elastic","description":"Elastic App Search Official PHP Client","archived":false,"fork":false,"pushed_at":"2024-08-08T15:42:33.000Z","size":375,"stargazers_count":52,"open_issues_count":8,"forks_count":21,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-30T22:13:47.340Z","etag":null,"topics":["api-client","elastic","elastic-app-search","php","search","swiftype"],"latest_commit_sha":null,"homepage":"https://www.elastic.co/products/app-search","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elastic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-05T11:44:30.000Z","updated_at":"2024-08-23T13:33:07.000Z","dependencies_parsed_at":"2024-09-25T01:54:14.394Z","dependency_job_id":"463fda12-d250-43dd-a9df-05617f87a687","html_url":"https://github.com/elastic/app-search-php","commit_stats":{"total_commits":214,"total_committers":9,"mean_commits":23.77777777777778,"dds":0.09345794392523366,"last_synced_commit":"1b8a8610e0efe812975cc445c0cd46c70cb340ea"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapp-search-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapp-search-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapp-search-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapp-search-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elastic","download_url":"https://codeload.github.com/elastic/app-search-php/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246429484,"owners_count":20775807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","elastic","elastic-app-search","php","search","swiftype"],"created_at":"2024-09-24T20:50:46.513Z","updated_at":"2025-03-31T07:09:10.884Z","avatar_url":"https://github.com/elastic.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e **⚠️ This client is deprecated ⚠️**\n\u003e\n\u003e As of Enterprise Search version 7.13.0, we are directing users to the new [Enterprise Search PHP Client](https://github.com/elastic/enterprise-search-php) and\n\u003e deprecating this client.\n\u003e\n\u003e 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\n\u003e be limited to bug fixes. All future enhancements will be focused on the Enterprise Search PHP Client.\n\u003e\n\u003e Thank you! - Elastic\n\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/elastic/app-search-php/blob/master/logo-app-search.png?raw=true\" alt=\"Elastic App Search Logo\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://circleci.com/gh/elastic/app-search-php\"\u003e\u003cimg src=\"https://circleci.com/gh/elastic/app-search-php.svg\" alt=\"CircleCI buidl\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003e A first-party PHP client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/products/app-search).\n\n## Contents\n\n- [Getting started](#getting-started-)\n- [Usage](#usage)\n- [Development](#development)\n- [FAQ](#faq-)\n- [Contribute](#contribute-)\n- [License](#license-)\n\n***\n\n## Getting started 🐣\n\nUsing this client assumes that you have already an instance of Elastic App Search up and running.\n\n\n\nYou can find more information about Elastic App Search at : https://www.elastic.co/app-search.\n\nYou can install the client in your project by using composer:\n\n```bash\ncomposer require elastic/app-search\n```\n\n### Versioning\n\n This client is versioned and released alongside App Search.\n\n To guarantee compatibility, use the most recent version of this library within the major version of the corresponding App Search implementation.\n\n For example, for App Search `7.3`, use `7.3` of this library or above, but not `8.0`.\n\n If you are using the [SaaS version available on swiftype.com](https://app.swiftype.com/as) of App Search, you should use the version 7.5.x of the client.\n\n## Usage\n\n### Configuring the client\n\n#### Basic client instantiation\n\nTo instantiate a new client you can use `\\Elastic\\AppSearch\\Client\\ClientBuilder`:\n\n```php\n  $apiEndpoint   = 'http://localhost:3002/';\n  $apiKey        = 'private-XXXXXXXXXXXX';\n  $clientBuilder = \\Elastic\\AppSearch\\Client\\ClientBuilder::create($apiEndpoint, $apiKey);\n\n  $client = $clientBuilder-\u003ebuild();\n```\n\n**Notes:**\n\n- The resulting client will be of type `\\Elastic\\AppSearch\\Client\\Client`\n\n- You can find the API endpoint and your API key URL in the credentials sections of the App Search dashboard.\n\n- 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.\n\n### Basic usage\n\n#### Retrieve or create an engine\n\nMost methods of the API require that you have access to an Engine.\n\nTo check if an Engine exists and retrieve its configuration, you can use the `Client::getEngine` method :\n\n```php\n  $engine = $client-\u003egetEngine('my-engine');\n```\n\nIf the Engine does not exists yet, you can create it by using the `Client::createEngine` method :\n\n```php\n  $engine = $client-\u003ecreateEngine('my-engine', 'en');\n```\n\nThe second parameter (`$language`) is optional. Set it to `null` to apply the `universal` language.\n\n[Read more](https://swiftype.com/documentation/app-search/api/engines#multi-language) about language support.\n\n#### Index some documents\n\nYou can use the `Client::indexDocuments` method to index some documents into the Engine:\n\n```php\n    $documents = [\n      ['id' =\u003e 'first-document', 'name' =\u003e 'Document name', 'description' =\u003e 'Document description'],\n      ['id' =\u003e 'other-document', 'name' =\u003e 'Other document name', 'description' =\u003e 'Other description'],\n    ];\n\n    $indexingResults = $client-\u003eindexDocuments('my-engine', $documents);\n```\n\nThe `$indexingResults` array will contain the result of the indexation of each documents. You should always check the content of the result.\n\n[Read more](https://swiftype.com/documentation/app-search/api/documents#create) about document indexing.\n\n#### Search\n\nYou can use the `Client::search` method to search in your Engine:\n\n```php\n    $searchParams = [\n      'page'  =\u003e ['current' =\u003e 1, 'size' =\u003e 10]\n    ];\n\n    $searchResponse = $client-\u003esearch('my-engine', 'search text', $searchParams);\n```\nIf you want to match all documents you can use and empty search query `''` as second parameter (`$queryText`).\n\nThe `$searchRequestParams` parameter is optional and can be used to use advanced search features. Allowed params are :\n\nParam name      | Documentation URL\n--------------- | ----------------------------------------------------------------------\n`page`          | https://swiftype.com/documentation/app-search/api/search#paging\n`filters`       | https://swiftype.com/documentation/app-search/api/search/filters\n`facets`        | https://swiftype.com/documentation/app-search/api/search/facets\n`sort`          | https://swiftype.com/documentation/app-search/api/search/sorting\n`boosts`        | https://swiftype.com/documentation/app-search/api/search/boosts\n`search_fields` | https://swiftype.com/documentation/app-search/api/search/search-fields\n`result_fields` | https://swiftype.com/documentation/app-search/api/search/result-fields\n`group`         | https://swiftype.com/documentation/app-search/api/search/grouping\n\nThe search response will contains at least a meta field and a results field as shown in this example:\n\n```php\n[\n    'meta' =\u003e [\n      'warnings' =\u003e [],\n      'page' =\u003e [\n        'current' =\u003e 1,\n        'total_pages' =\u003e 1,\n        'total_results' =\u003e 1,\n        'size' =\u003e 10\n      ],\n      'request_id' =\u003e 'feff7cf2359a6f6da84586969ef0ca89'\n    ],\n    'results' =\u003e [\n      [\n        'id' =\u003e ['raw' =\u003e 'first-document'],\n        'name' =\u003e ['raw' =\u003e 'Document name'],\n        'description' =\u003e ['raw' =\u003e ['Document description']\n      ]\n    ]\n  ]\n]\n```\n\n### Clients methods\n\nMethod      | Description | Documentation\n------------|-------------|--------------\n**`createEngine`**| Creates a new engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$name` (required) \u003cbr /\u003e   - `$language`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/engines#create)\n**`createMetaEngine`**| Creates a new meta engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$name` (required) \u003cbr /\u003e   - `$sourceEngines` (required)\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/engines#create)\n**`addMetaEngineSource`**| Add a source engine to an existing meta engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$sourceEngines` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/meta-engines#add-source-engines)\n**`createCuration`**| Create a new curation.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$queries` (required) \u003cbr /\u003e   - `$promotedDocIds`\u003cbr /\u003e   - `$hiddenDocIds`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/curations#create)\n**`createSynonymSet`**| Create a new synonym set.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$synonyms` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/synonyms#create)\n**`deleteCuration`**| Delete a curation by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$curationId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/curations#destroy)\n**`deleteDocuments`**| Delete documents by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentIds` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/documents#partial)\n**`deleteEngine`**| Delete an engine by name.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/engines#delete)\n**`deleteMetaEngineSource`**| Delete a source engine from a meta engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$sourceEngines` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/meta-engines#remove-source-engines)\n**`deleteSynonymSet`**| Delete a synonym set by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$synonymSetId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/synonyms#delete)\n**`getApiLogs`**| The API Log displays API request and response data at the Engine level.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$fromDate` (required) \u003cbr /\u003e   - `$toDate` (required) \u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr /\u003e   - `$query`\u003cbr /\u003e   - `$httpStatusFilter`\u003cbr /\u003e   - `$httpMethodFilter`\u003cbr /\u003e   - `$sortDirection`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/logs)\n**`getCountAnalytics`**| Returns the number of clicks and total number of queries over a period.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$filters`\u003cbr /\u003e   - `$interval`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/analytics/counts)\n**`getCuration`**| Retrieve a curation by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$curationId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/curations#single)\n**`getDocuments`**| Retrieves one or more documents by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentIds` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/documents#get)\n**`getEngine`**| Retrieves an engine by name.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/engines#get)\n**`getSchema`**| Retrieve current schema for then engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/schema#read)\n**`getSearchSettings`**| Retrive current search settings for the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/search-settings#show)\n**`getSynonymSet`**| Retrieve a synonym set by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$synonymSetId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/synonyms#list-one)\n**`getTopClicksAnalytics`**| Returns the number of clicks received by a document in descending order.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$query`\u003cbr /\u003e   - `$pageSize`\u003cbr /\u003e   - `$filters`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/analytics/clicks)\n**`getTopQueriesAnalytics`**| Returns queries anlaytics by usage count.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$pageSize`\u003cbr /\u003e   - `$filters`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/analytics/queries)\n**`indexDocuments`**| Create or update documents.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/documents#create)\n**`listCurations`**| Retrieve available curations for the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/curations#read)\n**`listDocuments`**| List all available documents with optional pagination support.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/documents#list)\n**`listEngines`**| Retrieves all engines with optional pagination support.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/engines#list)\n**`listSynonymSets`**| Retrieve available synonym sets for the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/synonyms#get)\n**`logClickthrough`**| Send data about clicked results.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$queryText` (required) \u003cbr /\u003e   - `$documentId` (required) \u003cbr /\u003e   - `$requestId`\u003cbr /\u003e   - `$tags`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/clickthrough)\n**`multiSearch`**| Run several search in the same request.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$queries` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/search#multi)\n**`querySuggestion`**| Provide relevant query suggestions for incomplete queries.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$query` (required) \u003cbr /\u003e   - `$fields`\u003cbr /\u003e   - `$size`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/query-suggestion)\n**`resetSearchSettings`**| Reset search settings for the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/search-settings#reset)\n**`search`**| Allows you to search over, facet and filter your data.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$queryText` (required) \u003cbr /\u003e   - `$searchRequestParams`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/search)\n**`updateCuration`**| Update an existing curation.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$curationId` (required) \u003cbr /\u003e   - `$queries` (required) \u003cbr /\u003e   - `$promotedDocIds`\u003cbr /\u003e   - `$hiddenDocIds`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/curations#update)\n**`updateDocuments`**| Partial update of documents.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/documents#partial)\n**`updateSchema`**| Update schema for the current engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$schema` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/schema#patch)\n**`updateSearchSettings`**| Update search settings for the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$searchSettings` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/app-search/api/search-settings#update)\n\n## Development\n\nCode for the endpoints is generated automatically using a custom version of [OpenAPI Generator](https://github.com/openapitools/openapi-generator).\n\nTo regenerate endpoints, use the docker laucher packaged in `vendor/bin`:\n\n```bash\n./vendor/bin/elastic-openapi-codegen.sh\n```\n\nThe custom generator will be built and launched using the following Open API spec file : `resources/api/api-spec.yml`.\n\nYou can then commit and PR the modified api-spec file and your endpoints code files.\n\nThe client class and readme may be changed in some cases. Do not forget to include them in your commit!\n\n## FAQ 🔮\n\n### Where do I report issues with the client?\n\nIf something is not working as expected, please open an [issue](https://github.com/elastic/app-search-php/issues/new).\n\n### Where can I find the full API documentation ?\n\nYour best bet is to read the [documentation](https://swiftype.com/documentation/app-search).\n\n### Where else can I go to get help?\n\nYou can checkout the [Elastic community discuss forums](https://discuss.elastic.co/c/app-search).\n\n## Contribute 🚀\n\nWe welcome contributors to the project. Before you begin, a couple notes...\n\n+ Before opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/elastic/app-search-php/issues).\n+ Please write simple code and concise documentation, when appropriate.\n\n## License 📗\n\n[Apache 2.0](https://github.com/elastic/app-search-php/blob/master/LICENSE) © [Elastic](https://github.com/elastic)\n\nThank you to all the [contributors](https://github.com/elastic/app-search-php/graphs/contributors)!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Fapp-search-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felastic%2Fapp-search-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Fapp-search-php/lists"}