️ 该客户端已被弃用️ 从企业搜索版本 7.13.0 开始,我们将用户引导至新的企业搜索 PHP 客户端并弃用此客户端。
此客户端将与所有 Enterprise Search 7.x 版本兼容,但不与 8.x 版本兼容。我们对该项目的开发工作将仅限于错误修复。所有未来的增强功能都将集中在企业搜索 PHP 客户端上。
谢谢你! - 松紧带
一个第一方 PHP 客户端,用于通过 Elastic App Search 构建出色的相关搜索体验。
使用此客户端假定您已经启动并运行了一个 Elastic App Search 实例。
您可以在以下网址找到有关 Elastic App Search 的更多信息:https://www.elastic.co/app-search。
您可以使用composer在项目中安装客户端:
composer require elastic/app-search
该客户端与 App Search 一起进行版本控制和发布。
为了保证兼容性,请在相应 App Search 实现的主要版本中使用此库的最新版本。
例如,对于 App Search 7.3
,请使用此库的7.3
或更高版本,但不要使用8.0
。
如果您使用 App Search 的 swiftype.com 上提供的 SaaS 版本,则应使用客户端的 7.5.x 版本。
要实例化新客户端,您可以使用ElasticAppSearchClientClientBuilder
:
$ apiEndpoint = ' http://localhost:3002/ ' ;
$ apiKey = ' private-XXXXXXXXXXXX ' ;
$ clientBuilder = Elastic AppSearch Client ClientBuilder :: create ( $ apiEndpoint , $ apiKey );
$ client = $ clientBuilder -> build ();
笔记:
生成的客户端类型为ElasticAppSearchClientClient
您可以在 App Search 仪表板的凭据部分找到 API 端点和 API 密钥 URL。
您可以使用任何类型的 API 密钥(私有、公共或管理)。如果您尝试执行未获得所使用密钥授权的操作,客户端将引发异常。
大多数 API 方法都要求您有权访问引擎。
要检查引擎是否存在并检索其配置,您可以使用Client::getEngine
方法:
$ engine = $ client -> getEngine ( ' my-engine ' );
如果 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
参数是可选的,可用于使用高级搜索功能。允许的参数是:
参数名称 | 文档网址 |
---|---|
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 | 创建新的策展。 参数 : - $engineName (必填)- $queries (必需)- $promotedDocIds - $hiddenDocIds | 端点文档 |
createSynonymSet | 创建一个新的同义词集。 参数 : - $engineName (必填)- $synonyms (必需) | 端点文档 |
deleteCuration | 按 id 删除策展。 参数 : - $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
中的dockerlaucher:
./vendor/bin/elastic-openapi-codegen.sh
将使用以下开放 API 规范文件构建和启动自定义生成器: resources/api/api-spec.yml
。
然后,您可以提交并 PR 修改后的 api-spec 文件和端点代码文件。
在某些情况下,客户端类和自述文件可能会发生更改。不要忘记将它们包含在您的提交中!
如果某些内容未按预期工作,请提出问题。
最好的选择是阅读文档。
您可以查看 Elastic 社区讨论论坛。
我们欢迎对该项目的贡献者。在开始之前,请注意以下几点...
Apache 2.0 © 弹性
感谢所有贡献者!