silverstripe-terraformers/app-search-php-8

此包已被放弃,不再维护。没有建议的替代包。

Elastic App Search PHP 客户端

7.14.0 2022-06-14 21:11 UTC

README

⚠️ 此客户端已被放弃 ⚠️

此包仅用于为 Elastic App Search 作为 PHP 8 允许的平台要求提供服务

所有荣誉和赞誉都归功于 Elastic App Search 的贡献者

自企业搜索版本 7.13.0 以来,我们正在引导用户使用新的 Enterprise Search PHP 客户端 并弃用此客户端。

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

谢谢!- Elastic

Elastic App Search Logo

CircleCI buidl

用于构建优秀、相关搜索体验的弹性 App Search 的一方 PHP 客户端。

内容

入门 🐣

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

有关 Elastic App Search 的更多信息,请参阅: https://elastic.ac.cn/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参数是可选的,并可用于使用高级搜索功能。允许的参数有

参数名称 文档URL
page https://swiftype.com/documentation/app-search/api/search#paging
filters https://swiftype.com/documentation/app-search/api/search/filters
facets https://swiftype.com/documentation/app-search/api/search/facets
sort https://swiftype.com/documentation/app-search/api/search/sorting
boosts https://swiftype.com/documentation/app-search/api/search/boosts
search_fields https://swiftype.com/documentation/app-search/api/search/search-fields
result_fields https://swiftype.com/documentation/app-search/api/search/result-fields
group https://swiftype.com/documentation/app-search/api/search/grouping

搜索响应将至少包含一个元字段和一个结果字段,如本示例所示。

[
    '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']
      ]
    ]
  ]
]

客户端方法

方法 描述 文档
createEngine 创建一个新的引擎。

参数
- $name(必需)
- $language
端点文档
createMetaEngine 创建一个新的元引擎。

参数
- $name(必需)
- $sourceEngines(必需)
端点文档
addMetaEngineSource 将源引擎添加到现有的元引擎。

参数
- $engineName(必需)
- $sourceEngines(必需)
端点文档
createCuration 创建一个新的curations。

参数
- $engineName(必需)
- $queries(必需)
- $promotedDocIds
- $hiddenDocIds
端点文档
createSynonymSet 创建一个新的同义词集。

参数
- $engineName(必需)
- $synonyms(必需)
端点文档
deleteCuration 通过id删除curations。

参数
- $engineName(必需)
- $curationId(必需)
端点文档
deleteDocuments 通过id删除文档。

参数
- $engineName(必需)
- $documentIds(必需)
端点文档
deleteEngine 通过名称删除引擎。

参数
- $engineName(必需)
端点文档
deleteMetaEngineSource 从元引擎中删除源引擎。

参数
- $engineName(必需)
- $sourceEngines(必需)
端点文档
deleteSynonymSet 通过id删除同义词集。

参数
- $engineName(必需)
- $synonymSetId(必需)
端点文档
getApiLogs API日志在引擎级别显示API请求和响应数据。

参数
- $engineName(必需)
- $fromDate(必需)
- $toDate(必需)
- $currentPage
- $pageSize
- $query
- $httpStatusFilter
- $httpMethodFilter
- $sortDirection
端点文档
getCountAnalytics 返回一段时间内的点击次数和总查询次数。

参数
- $engineName(必需)
- $filters
- $interval
端点文档
getCuration 通过ID检索一个精选内容。

参数
- $engineName(必需)
- $curationId(必需)
端点文档
getDocuments 通过ID检索一个或多个文档。

参数
- $engineName(必需)
- $documentIds(必需)
端点文档
getEngine 通过名称检索一个引擎。

参数
- $engineName(必需)
端点文档
getSchema 检索引擎的当前模式。

参数
- $engineName(必需)
端点文档
getSearchSettings 检索引擎的当前搜索设置。

参数
- $engineName(必需)
端点文档
getSynonymSet 通过ID检索一个同义词集。

参数
- $engineName(必需)
- $synonymSetId(必需)
端点文档
getTopClicksAnalytics 以降序返回文档接收到的点击次数。

参数
- $engineName(必需)
- $query
- $pageSize
- $filters
端点文档
getTopQueriesAnalytics 按使用次数返回查询分析。

参数
- $engineName(必需)
- $pageSize
- $filters
端点文档
indexDocuments 创建或更新文档。

参数
- $engineName(必需)
- $documents (必需)
端点文档
listCurations 检索引擎可用的精选内容。

参数
- $engineName(必需)
- $currentPage
- $pageSize
端点文档
listDocuments 列出所有可用的文档,可选支持分页。

参数
- $engineName(必需)
- $currentPage
- $pageSize
端点文档
listEngines 检索所有引擎,可选支持分页。

参数
- $currentPage
- $pageSize
端点文档
listSynonymSets 检索引擎可用的同义词集。

参数
- $engineName(必需)
- $currentPage
- $pageSize
端点文档
logClickthrough 发送关于点击结果的的数据。

参数
- $engineName(必需)
- $queryText (必需)
- $documentId (必需)
- $requestId
- $tags
端点文档
multiSearch 在同一请求中运行多个搜索。

参数
- $engineName(必需)
- $queries(必需)
端点文档
querySuggestion 为不完整的查询提供相关的查询建议。

参数
- $engineName(必需)
- $query (必需)
- $fields
- $size
端点文档
resetSearchSettings 重置引擎的搜索设置。

参数
- $engineName(必需)
端点文档
search 允许您搜索、分面和过滤您的数据。

参数
- $engineName(必需)
- $queryText (必需)
- $searchRequestParams
端点文档
updateCuration 更新现有的精选内容。

参数
- $engineName(必需)
- $curationId(必需)
- $queries(必需)
- $promotedDocIds
- $hiddenDocIds
端点文档
updateDocuments 文档的部分更新。

参数
- $engineName(必需)
- $documents (必需)
端点文档
updateSchema 更新当前引擎的模式。

参数
- $engineName(必需)
- $schema (必需)
端点文档
updateSearchSettings 更新引擎的搜索设置。

参数
- $engineName(必需)
- $searchSettings (必需)
端点文档

开发

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

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

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

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

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

在某些情况下,客户端类和说明可能已更改。请记住在提交中包含它们!

常见问题 🔮

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

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

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

您最好的选择是阅读文档

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

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

贡献 🚀

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

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

许可 📚

Apache 2.0 © Elastic

感谢所有贡献者