elastic/app-search-php

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

Elastic App Search 官方 PHP 客户端

7.13.0 2021-05-25 19:00 UTC

README

⚠️ 此客户端已弃用 ⚠️

自企业搜索版本 7.13.0 开始,我们建议用户使用新的 企业搜索 PHP 客户端 并弃用此客户端。

此客户端将与所有企业搜索 7.x 版本兼容,但不会与 8.x 版本兼容。我们对这个项目的开发工作将仅限于错误修复。所有未来的增强都将专注于企业搜索 PHP 客户端。

感谢!- Elastic

Elastic App Search Logo

CircleCI buidl

用于构建卓越、相关搜索体验的第一方 PHP 客户端,与 Elastic App Search

内容

入门 🐣

使用此客户端假设您已经有一个正在运行的 Elastic App Search 实例。

您可以在 https://elastic.ac.cn/app-search 上找到有关 Elastic 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']
      ]
    ]
  ]
]

客户端方法

开发

端点代码是通过使用自定义版本的 OpenAPI Generator 自动生成的。

要重新生成端点,请使用 vendor/bin 中的 docker 启动器。

./vendor/bin/elastic-openapi-codegen.sh

自定义生成器将使用以下 Open API 规范文件构建和启动:resources/api/api-spec.yml

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

在某些情况下,客户端类和 README 文件可能会发生变化。请记得在您的提交中包含它们!

常见问题解答 🔮

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

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

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

您最好的选择是阅读 文档

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

您可以在 Elastic 社区讨论论坛 上查看。

贡献 🚀

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

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

许可证 📗

Apache 2.0 © Elastic

感谢所有 贡献者