elastic/site-search

Elastic Site Search 官方 PHP 客户端

1.0.5 2024-03-12 10:43 UTC

This package is auto-updated.

Last update: 2024-09-08 16:06:47 UTC


README

Elastic Site Search Logo

GitHub release CircleCI build Dependencies status

这是用于 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);

注意

搜索

要搜索您的引擎,您可以使用 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 社区讨论论坛

贡献 🚀

我们欢迎对项目做出贡献的参与者。在您开始之前,请注意以下几点...

  • 在打开拉取请求之前,请创建一个问题来 讨论您提案的范围
  • 当适当的时候,请编写简洁的代码和文档。

许可证 📗

Apache 2.0 © Elastic

感谢所有 贡献者