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-08-08 15:59:30 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
。
然后,您可以提交和PR修改后的api-spec文件和您的端点代码文件。
在某些情况下,客户端类和readme可能需要更改。请记住将它们包含在您的提交中!
常见问题 🔮
我在哪里报告客户端的问题?
如果某些功能不符合预期,请打开一个 问题。
我可以在哪里找到完整的API文档?
您最好的选择是阅读 文档。
我还可以去哪里寻求帮助?
您可以查看 Elastic社区讨论论坛。
贡献 🚀
我们欢迎对项目做出贡献的参与者。在您开始之前,请注意以下几点...
- 在提交拉取请求之前,请创建一个问题来讨论您提案的范围。
- 当适当的时候,请编写简洁的代码和简洁的文档。
许可 📗
感谢所有贡献者!