️ このクライアントは廃止されました️ Enterprise Search バージョン 7.13.0 の時点で、ユーザーは新しい Enterprise Search PHP クライアントに誘導され、このクライアントは非推奨になります。
このクライアントは、すべての Enterprise Search 7.x リリースと互換性がありますが、8.x リリースとは互換性がありません。このプロジェクトでの開発作業はバグ修正に限定されます。今後のすべての機能強化は、Enterprise Search PHP クライアントに焦点を当てます。
ありがとう! - 伸縮性のある
Elastic App Search を使用して優れた関連性の高い検索エクスペリエンスを構築するためのファーストパーティ PHP クライアント。
このクライアントを使用する場合は、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
になります。
API エンドポイントと API キー URL は、App Search ダッシュボードの認証情報セクションで確認できます。
任意のタイプの API キー (プライベート、パブリック、または管理者) を使用できます。使用されたキーに対して許可されていないアクションを実行しようとすると、クライアントは例外をスローします。
API のほとんどのメソッドでは、エンジンへのアクセス権が必要です。
エンジンが存在するかどうかを確認し、その構成を取得するには、 Client::getEngine
メソッドを使用できます。
$ engine = $ client -> getEngine ( ' my-engine ' );
エンジンがまだ存在しない場合は、 Client::createEngine
メソッドを使用して作成できます。
$ engine = $ client -> createEngine ( ' my-engine ' , ' en ' );
2 番目のパラメータ ( $language
) はオプションです。 universal
言語を適用するには、 null
に設定します。
言語サポートについて詳しくは、こちらをご覧ください。
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 );
すべてのドキュメントを一致させたい場合は、2 番目のパラメーター ( $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 | 新しいキュレーションを作成します。 パラメータ: - $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 によって 1 つ以上のドキュメントを取得します。 パラメータ: - $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 laucher を使用します。
./vendor/bin/elastic-openapi-codegen.sh
カスタム ジェネレーターは、Open API 仕様ファイルresources/api/api-spec.yml
を使用して構築および起動されます。
その後、変更した API 仕様ファイルとエンドポイント コード ファイルをコミットして PR できます。
クライアントクラスやReadmeは変更される場合があります。それらをコミットに忘れずに含めてください。
何かが期待どおりに動作しない場合は、問題を開いてください。
最善の策は、ドキュメントを読むことです。
Elastic コミュニティのディスカッション フォーラムをチェックアウトできます。
プロジェクトへの貢献者を歓迎します。始める前に、いくつか注意事項があります...
Apache 2.0 © エラスティック
貢献者の皆様、ありがとうございました!