elastic / site-search
Elastic Site Search 官方 PHP 客户端
Requires
- php: ^5.6|^7.0|^8.0
- elastic/openapi-codegen: ^1.0.6
- psr/log: ^1|^2|^3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.19|^3.0
- overtrue/phplint: ^1.2|^2.4|^3.4|^4.0|^5.0|^6.0
- phpunit/phpunit: ^5.6.0|^6.3.0|9.5.20
- squizlabs/php_codesniffer: ^3.4.0
- symfony/yaml: *
This package is auto-updated.
Last update: 2024-09-08 16:06:47 UTC
README
这是用于 Elastic Site Search API 的第一方 PHP 客户端。
内容
入门 🐣
使用此客户端假定您已经在 https://elastic.ac.cn/products/site-search 上创建了 Site Search 账户。
您可以通过使用 composer 在项目中安装客户端
composer require elastic/site-search
用法
配置客户端
基本客户端实例化
要实例化一个新的客户端,您可以使用 \Elastic\SiteSearch\Client\ClientBuilder
$apiKey = 'XXXXXXXXXXXX'; $clientBuilder = \Elastic\SiteSearch\Client\ClientBuilder::create($apiKey); $client = $clientBuilder->build();
注意
-
生成的客户端类型为
\Elastic\SiteSearch\Client\Client
-
您可以在 Site Search 账户中找到 API 端点和您的 API 密钥 URL: https://app.swiftype.com/settings/account。
-
Site Search PHP 客户端不支持如文档中所述通过 Engine Key 进行身份验证: 文档。
基本用法
检索或创建一个引擎
API 的大多数方法都需要您有权访问一个引擎。
要检查引擎是否存在并检索其配置,您可以使用 Client::getEngine
方法
$engine = $client->getEngine('my-engine');
如果引擎尚不存在,您可以使用 Client::createEngine
方法创建它
$engine = $client->createEngine('my-engine', 'en');
第二个参数($language
)是可选的或可以设置为 null。然后,引擎将使用 universal
语言创建。支持的语言列表在此处: https://swiftype.com/documentation/site-search/overview#language-optimization
文档类型
当使用 Site Search 时,每个文档都有一个关联的 DocumentType。
您可以使用 Client::listDocumentTypes
方法在引擎中列出可用的文档类型
$documentTypes = $client->listDocumentTypes('my-engine');
为了索引文档,您需要在您的引擎中至少创建一个 DocumentType。这可以通过使用 Client::createDocumentType
方法完成
$documentType = $client->createDocumentType('my-engine', 'my-document-type');
索引一些文档
为了在引擎中索引一些文档,您可以使用 Client::createOrUpdateDocuments
方法
$documents = [ [ 'external_id' => 'first-document', 'fields' => [ ['name' => 'title', 'value' => 'First document title', 'type' => 'string'], ['name' => 'content', 'value' => 'Text for the first document.', 'type' => 'string'], ] ], [ 'external_id' => 'other-document', 'fields' => [ ['name' => 'title', 'value' => 'Other document title', 'type' => 'string'], ['name' => 'content', 'value' => 'Text for the other document.', 'type' => 'string'], ] ], ]; $indexingResults = $client->createOrUpdateDocuments('my-engine', 'my-document-type', $documents);
注意
-
$indexingResults
数组将包含每个文档索引的结果。您应该始终检查结果的内容。 -
有关可用的字段类型及其相关用例的完整列表,请在此处查看: https://swiftype.com/documentation/site-search/overview#fieldtype
-
有关端点和索引文档的其他方法的完整文档,请在此处查看: https://swiftype.com/documentation/site-search/indexing。
搜索
要搜索您的引擎,您可以使用 Client::search
方法
$searchResponse = $client->search('my-engine', 'fulltext search query');
可以使用可选的 $searchRequestParams
将额外的参数传递给搜索 API 端点(分页、过滤器、细分...)
$searchParams = ['per_page' => 10, 'page' => 2]; $searchResponse = $client->search('my-engine', 'fulltext search query', $searchParams);
允许的参数
客户端方法
开发
端点代码是使用自定义版本的 OpenAPI Generator 自动生成的。
要重新生成端点,请使用打包在 vendor/bin
中的 docker 启动器。
./vendor/bin/elastic-openapi-codegen.sh
自定义生成器将使用以下 Open API 规范文件构建和启动:resources/api/api-spec.yml
。
然后,您可以提交修改后的 api-spec 文件和端点代码文件。
在某些情况下,客户端类和自述文件可能会发生变化。请务必将它们包含在您的提交中!
常见问题 🔮
我在哪里报告客户端的问题?
如果某个功能不符合预期,请打开一个 问题。
我可以在哪里找到完整的 API 文档?
您最好的选择是阅读 文档。
我还可以去哪里寻求帮助?
您可以查看 Elastic 社区讨论论坛。
贡献 🚀
我们欢迎对项目做出贡献的参与者。在您开始之前,请注意以下几点...
- 在打开拉取请求之前,请创建一个问题来 讨论您提案的范围。
- 当适当的时候,请编写简洁的代码和文档。
许可证 📗
感谢所有 贡献者!