elastic / app-search-php
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:51 UTC
README
⚠️ 此客户端已弃用 ⚠️
自企业搜索版本 7.13.0 开始,我们建议用户使用新的 企业搜索 PHP 客户端 并弃用此客户端。
此客户端将与所有企业搜索 7.x 版本兼容,但不会与 8.x 版本兼容。我们对这个项目的开发工作将仅限于错误修复。所有未来的增强都将专注于企业搜索 PHP 客户端。
感谢!- Elastic
用于构建卓越、相关搜索体验的第一方 PHP 客户端,与 Elastic App Search。
内容
入门 🐣
使用此客户端假设您已经有一个正在运行的 Elastic App Search 实例。
您可以在 https://elastic.ac.cn/app-search 上找到有关 Elastic App Search 的更多信息。
您可以通过 composer 在项目中安装客户端
composer require elastic/app-search
版本控制
此客户端与 App Search 一起版本控制和发布。
为了保证兼容性,请使用与相应 App Search 实现的主版本相对应的此库的最新版本。
例如,对于 App Search 7.3
,请使用此库的 7.3
或更高版本,但不能使用 8.0
。
如果您使用的是在 swiftype.com 上可用的 App Search 的 SaaS 版本,则应使用客户端的 7.5.x 版本。
使用方法
配置客户端
基本客户端实例化
要实例化一个新的客户端,您可以使用 \Elastic\AppSearch\Client\ClientBuilder
$apiEndpoint = 'http://localhost:3002/'; $apiKey = 'private-XXXXXXXXXXXX'; $clientBuilder = \Elastic\AppSearch\Client\ClientBuilder::create($apiEndpoint, $apiKey); $client = $clientBuilder->build();
注意
-
生成的客户端类型为
\Elastic\AppSearch\Client\Client
-
您可以在 App Search 仪表板的凭据部分找到 API 端点和您的 API 密钥 URL。
-
您可以使用任何类型的 API 密钥(私有、公共或管理员)。如果尝试执行授权给密钥不合法的操作,客户端将抛出异常。
基本使用
检索或创建引擎
API 的大多数方法都需要您有访问引擎的权限。
要检查引擎是否存在并检索其配置,您可以使用 Client::getEngine
方法
$engine = $client->getEngine('my-engine');
如果引擎尚未存在,您可以使用 Client::createEngine
方法创建它
$engine = $client->createEngine('my-engine', 'en');
第二个参数($language
)是可选的。将其设置为 null
以应用 universal
语言。
有关语言支持更多信息,请参阅 这里
索引一些文档
您可以使用 Client::indexDocuments
方法将一些文档索引到引擎中
$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);
$indexingResults
数组将包含每个文档索引的结果。您应始终检查结果的内容。
有关文档索引的更多信息,请参阅 这里
搜索
您可以使用 Client::search
方法在您的引擎中进行搜索
$searchParams = [ 'page' => ['current' => 1, 'size' => 10] ]; $searchResponse = $client->search('my-engine', 'search text', $searchParams);
如果您想匹配所有文档,可以使用空搜索查询 ''
作为第二个参数($queryText
)。
$searchRequestParams
参数是可选的,可以用来使用高级搜索功能。允许的参数有:
搜索响应将至少包含一个元字段和一个结果字段,如本例所示
[ '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'] ] ] ] ]
客户端方法
开发
端点代码是通过使用自定义版本的 OpenAPI Generator 自动生成的。
要重新生成端点,请使用 vendor/bin
中的 docker 启动器。
./vendor/bin/elastic-openapi-codegen.sh
自定义生成器将使用以下 Open API 规范文件构建和启动:resources/api/api-spec.yml
。
然后您可以提交修改后的 api-spec 文件和端点代码文件。
在某些情况下,客户端类和 README 文件可能会发生变化。请记得在您的提交中包含它们!
常见问题解答 🔮
我在哪里报告客户端的问题?
如果某个功能不符合预期,请打开一个 问题。
在哪里可以找到完整的 API 文档?
您最好的选择是阅读 文档。
我还可以去哪里寻求帮助?
您可以在 Elastic 社区讨论论坛 上查看。
贡献 🚀
我们欢迎对该项目的贡献者。在您开始之前,请注意以下几点...
- 在打开拉取请求之前,请先创建一个 问题 来讨论您提案的范围。
- 在适当的情况下,请编写简洁的代码和文档。
许可证 📗
感谢所有 贡献者!