elastic / app-search
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
⚠️ 此客户端已弃用 ⚠️
自企业搜索版本 7.13.0 以来,我们正在引导用户使用新的 企业搜索 PHP 客户端 并弃用此客户端。
此客户端将与所有企业搜索 7.x 版本兼容,但将不兼容 8.x 版本。我们在此项目上的开发工作将仅限于错误修复。所有未来的增强都将集中在企业搜索 PHP 客户端上。
谢谢!- Elastic
为构建出色的相关搜索体验提供 Elastic App Search 的首个 PHP 客户端。
内容
入门 🐣
使用此客户端假定您已经有一个运行中的 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 laucher。
./vendor/bin/elastic-openapi-codegen.sh
自定义生成器将使用以下 Open API 规范文件构建和启动:resources/api/api-spec.yml
。
然后,您可以提交和 PR 修改后的 api-spec 文件和您的端点代码文件。
在某些情况下,客户端类和 README 文件可能会发生变化。请记住在您的提交中包含它们!
常见问题解答 🔮
我在哪里报告客户端的问题?
如果某些操作不符合预期,请打开一个 问题。
我在哪里可以找到完整的 API 文档?
您最好的选择是阅读 文档。
我还可以去哪里寻求帮助?
您可以去 Elastic 社区讨论论坛 寻求帮助。
贡献 🚀
我们欢迎项目贡献者。在您开始之前,请注意以下事项...
- 在打开拉取请求之前,请创建一个问题 讨论您提案的范围。
- 请根据需要编写简洁的代码和文档。
许可 📗
感谢所有 贡献者!