elastic/app-search

此包已废弃,不再维护。作者建议使用 elastic/enterprise-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

为构建出色的相关搜索体验提供 Elastic App Search 的首个 PHP 客户端。

内容

入门 🐣

使用此客户端假定您已经有一个运行中的 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 laucher。

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

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

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

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

常见问题解答 🔮

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

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

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

您最好的选择是阅读 文档

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

您可以去 Elastic 社区讨论论坛 寻求帮助。

贡献 🚀

我们欢迎项目贡献者。在您开始之前,请注意以下事项...

  • 在打开拉取请求之前,请创建一个问题 讨论您提案的范围
  • 请根据需要编写简洁的代码和文档。

许可 📗

Apache 2.0 © Elastic

感谢所有 贡献者