Elasticsearch を実際に体験してみましょう。サンプルノートブックを詳しく調べたり、Elastic の無料クラウドトライアルを開始したり、今すぐローカルマシンで Elastic を試したりできます。
elasticsearch-php v8.13.0以降では、 ES|QLクエリを実行し、結果をstdClassの PHP オブジェクトまたはカスタム クラスにマップできます。
ES|QL
ES|QLは、Elasticsearch 8.11.0 で導入された新しい Elasticsearch クエリ言語です。現在、テクニカル プレビューで利用可能です。Elasticsearch に保存されているデータをフィルタリング、変換、分析するための強力な方法を提供します。
「パイプ」( | )を使用して、データを段階的に操作および変換します。このアプローチにより、ユーザーは一連の操作を構成でき、1 つの操作の出力が次の操作の入力となり、複雑なデータ変換と分析が可能になります。
たとえば、次のクエリは、 sample_dataインデックスの最初の 3 つのドキュメント (行) を返します。

ユースケース: 公式 PHP クライアントの ES|QL 機能
公式 PHP クライアントで開発された ES|QL 機能を説明するために、次の情報を含む 81,828 冊の書籍 (54.4 MB) のCSV ファイルをElasticsearch に保存しました。
このリストは、公開されているAmazon Books Reviews データセットから抽出しました。
次の Elasticsearch マッピングを使用してbooksインデックスを作成しました:
rating値は、2.9 GB のBooks_rating.csvファイルから取得されたランキングレビューの平均です。
ここでは、 Elasticsearch にすべての書籍を一括インポートするために使用した PHP スクリプトを見つけることができます。一括操作には PHP 8.2.17 を使用して 7 秒と 28 MB の RAM が必要でした。提案されたマッピングでは、Elasticsearch のインデックス サイズは約 62 MB になります。
ES|QL の結果を PHP オブジェクトまたはカスタム クラスにマッピングする
esql()->query()エンドポイントを使用して、PHP で ES|QL クエリを実行できます。このクエリの結果はテーブル データ構造になります。これは、 columnsフィールドとvaluesフィールドを使用して JSON で表現されます。columnsフィールドにはnameとtype定義があります。
以下は、ユーザーのランキングレビュー順に並べられた、Stephen King が書いたトップ 10 の本を取得する ES|QL クエリの例です。
Elasticsearch からの JSON 結果は次のようになります。
この例では、書籍に関連する 6 つのプロパティ (著者、説明、出版社、評価、タイトル、年) と 10 件の結果 (すべて Stephen King の書籍) があります。
ES|QL でサポートされているすべてのタイプのリストはここに記載されています。
$result応答オブジェクトには、配列、文字列、またはオブジェクトとしてアクセスできます (詳細については、ここを参照してください)。
オブジェクト インターフェイスを使用すると、プロパティとインデックスを使用して値にアクセスできます。たとえば、 $result->values[0][4]リストの最初の本 (0) のタイトル (4) を返し、 $result->values[1][3] 2 番目の本 (1) のランク スコア (3) を返します。PHP の配列のインデックスは 0 から始まることに注意してください。
このインターフェースは、いくつかのユースケースでは十分ですが、ほとんどの場合、結果としてオブジェクトの配列を取得したいと考えます。
結果をオブジェクトの配列にマップするには、elasticsearch-php の新しいmapTo()機能を使用できます。
この関数は、 Elasticsearch レスポンス オブジェクトで直接使用できます。つまり、次のようにアクセスできます。
カスタム Book クラスがある場合は、次のようにそれを使用して結果をマップできます。
クラスに ES|QL 結果に含まれるプロパティに加えて他のプロパティがある場合も、これは同様に機能します。mapTo()関数は、ES|QL 結果の列として返されるプロパティのみを使用します。
この記事で報告されているすべての例は、ここからダウンロードできます。
よくあるご質問
ES|QLとは何ですか?
ES|QL は、Elasticsearch 8.11.0 で導入された Elasticsearch クエリ言語です。Elasticsearch に保存されているデータをフィルタリング、変換、分析するための強力な方法を提供します。




