silverstripe-terraformers / app-search-php-8
Elastic App Search PHP 客户端
Requires
- php: >=7.0
- psr/log: ^1.0.
- silverstripe-terraformers/openapi-codegen-php-8: ^1.0.5
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: 2022-06-14 21:28:00 UTC
README
⚠️ 此客户端已被放弃 ⚠️
此包仅用于为 Elastic App Search 作为 PHP 8 允许的平台要求提供服务
所有荣誉和赞誉都归功于 Elastic App Search 的贡献者
自企业搜索版本 7.13.0 以来,我们正在引导用户使用新的 Enterprise Search PHP 客户端 并弃用此客户端。
此客户端将与所有企业搜索 7.x 版本兼容,但将不与 8.x 版本兼容。我们对这个项目的发展将仅限于错误修复。所有未来的增强都将集中在企业搜索 PHP 客户端上。
谢谢!- Elastic
用于构建优秀、相关搜索体验的弹性 App Search 的一方 PHP 客户端。
内容
入门 🐣
使用此客户端假定您已经有一个运行中的 Elastic App Search 实例。
有关 Elastic App Search 的更多信息,请参阅: https://elastic.ac.cn/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'] ] ] ] ]
客户端方法
方法 | 描述 | 文档 |
---|---|---|
createEngine |
创建一个新的引擎。 参数 - $name (必需)- $language |
端点文档 |
createMetaEngine |
创建一个新的元引擎。 参数 - $name (必需)- $sourceEngines (必需) |
端点文档 |
addMetaEngineSource |
将源引擎添加到现有的元引擎。 参数 - $engineName (必需)- $sourceEngines (必需) |
端点文档 |
createCuration |
创建一个新的curations。 参数 - $engineName (必需)- $queries (必需)- $promotedDocIds - $hiddenDocIds |
端点文档 |
createSynonymSet |
创建一个新的同义词集。 参数 - $engineName (必需)- $synonyms (必需) |
端点文档 |
deleteCuration |
通过id删除curations。 参数 - $engineName (必需)- $curationId (必需) |
端点文档 |
deleteDocuments |
通过id删除文档。 参数 - $engineName (必需)- $documentIds (必需) |
端点文档 |
deleteEngine |
通过名称删除引擎。 参数 - $engineName (必需) |
端点文档 |
deleteMetaEngineSource |
从元引擎中删除源引擎。 参数 - $engineName (必需)- $sourceEngines (必需) |
端点文档 |
deleteSynonymSet |
通过id删除同义词集。 参数 - $engineName (必需)- $synonymSetId (必需) |
端点文档 |
getApiLogs |
API日志在引擎级别显示API请求和响应数据。 参数 - $engineName (必需)- $fromDate (必需)- $toDate (必需)- $currentPage - $pageSize - $query - $httpStatusFilter - $httpMethodFilter - $sortDirection |
端点文档 |
getCountAnalytics |
返回一段时间内的点击次数和总查询次数。 参数 - $engineName (必需)- $filters - $interval |
端点文档 |
getCuration |
通过ID检索一个精选内容。 参数 - $engineName (必需)- $curationId (必需) |
端点文档 |
getDocuments |
通过ID检索一个或多个文档。 参数 - $engineName (必需)- $documentIds (必需) |
端点文档 |
getEngine |
通过名称检索一个引擎。 参数 - $engineName (必需) |
端点文档 |
getSchema |
检索引擎的当前模式。 参数 - $engineName (必需) |
端点文档 |
getSearchSettings |
检索引擎的当前搜索设置。 参数 - $engineName (必需) |
端点文档 |
getSynonymSet |
通过ID检索一个同义词集。 参数 - $engineName (必需)- $synonymSetId (必需) |
端点文档 |
getTopClicksAnalytics |
以降序返回文档接收到的点击次数。 参数 - $engineName (必需)- $query - $pageSize - $filters |
端点文档 |
getTopQueriesAnalytics |
按使用次数返回查询分析。 参数 - $engineName (必需)- $pageSize - $filters |
端点文档 |
indexDocuments |
创建或更新文档。 参数 - $engineName (必需)- $documents (必需) |
端点文档 |
listCurations |
检索引擎可用的精选内容。 参数 - $engineName (必需)- $currentPage - $pageSize |
端点文档 |
listDocuments |
列出所有可用的文档,可选支持分页。 参数 - $engineName (必需)- $currentPage - $pageSize |
端点文档 |
listEngines |
检索所有引擎,可选支持分页。 参数 - $currentPage - $pageSize |
端点文档 |
listSynonymSets |
检索引擎可用的同义词集。 参数 - $engineName (必需)- $currentPage - $pageSize |
端点文档 |
logClickthrough |
发送关于点击结果的的数据。 参数 - $engineName (必需)- $queryText (必需)- $documentId (必需)- $requestId - $tags |
端点文档 |
multiSearch |
在同一请求中运行多个搜索。 参数 - $engineName (必需)- $queries (必需) |
端点文档 |
querySuggestion |
为不完整的查询提供相关的查询建议。 参数 - $engineName (必需)- $query (必需)- $fields - $size |
端点文档 |
resetSearchSettings |
重置引擎的搜索设置。 参数 - $engineName (必需) |
端点文档 |
search |
允许您搜索、分面和过滤您的数据。 参数 - $engineName (必需)- $queryText (必需)- $searchRequestParams |
端点文档 |
updateCuration |
更新现有的精选内容。 参数 - $engineName (必需)- $curationId (必需)- $queries (必需)- $promotedDocIds - $hiddenDocIds |
端点文档 |
updateDocuments |
文档的部分更新。 参数 - $engineName (必需)- $documents (必需) |
端点文档 |
updateSchema |
更新当前引擎的模式。 参数 - $engineName (必需)- $schema (必需) |
端点文档 |
updateSearchSettings |
更新引擎的搜索设置。 参数 - $engineName (必需)- $searchSettings (必需) |
端点文档 |
开发
端点的代码是使用自定义版本的 OpenAPI Generator 自动生成的。
要重新生成端点,请使用 vendor/bin
中的 docker 启动器。
./vendor/bin/elastic-openapi-codegen.sh
自定义生成器将使用以下 Open API 规范文件构建和启动: resources/api/api-spec.yml
。
然后,您可以提交和 PR 修改后的 api-spec 文件和您的端点代码文件。
在某些情况下,客户端类和说明可能已更改。请记住在提交中包含它们!
常见问题 🔮
我在哪里报告客户端的问题?
如果某个功能不符合预期,请打开一个 问题。
我可以在哪里找到完整的API文档?
您最好的选择是阅读文档。
我还可以去哪里寻求帮助?
您可以查看 Elastic社区讨论论坛。
贡献 🚀
我们欢迎对项目做出贡献的参与者。在您开始之前,请注意以下事项...
- 在提交拉取请求之前,请先创建一个讨论您提案的范围的问题。
- 当适当的时候,请编写简单的代码和简洁的文档。
许可 📚
感谢所有贡献者!