elastic/site-search-php

此包已被废弃,不再维护。作者建议使用elastic/site-search包。

Elastic Site Search 官方 PHP 客户端

1.0.5 2024-03-12 10:43 UTC

This package is auto-updated.

Last update: 2024-08-08 15:59:30 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

然后,您可以提交和PR修改后的api-spec文件和您的端点代码文件。

在某些情况下,客户端类和readme可能需要更改。请记住将它们包含在您的提交中!

常见问题 🔮

我在哪里报告客户端的问题?

如果某些功能不符合预期,请打开一个 问题

我可以在哪里找到完整的API文档?

您最好的选择是阅读 文档

我还可以去哪里寻求帮助?

您可以查看 Elastic社区讨论论坛

贡献 🚀

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

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

许可 📗

Apache 2.0 © Elastic

感谢所有贡献者