View a markdown version of this page

サポートされているクエリ言語 - Amazon OpenSearch Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サポートされているクエリ言語

最適化エンジンは、PPL (パイプ処理言語) と SQL をクエリ言語としてサポートしています。最適化エンジンは、ベクトル化された実行エンジンを通じて PPL と SQL の両方をネイティブに実行します。構文の完全なリファレンスについては、OpenSearch ウェブサイトの OpenSearch SQL および PPL ドキュメントを参照してください。 OpenSearch

PPL サポート

最適化エンジンは PPL (パイプ処理言語) をネイティブに実行します。PPL は OpenSearch UI のプライマリクエリ言語であり、アラートや異常検出などのプラグインで使用されます。完全な PPL 構文については、OpenSearch ウェブサイトの OpenSearch PPL リファレンスを参照してください。 OpenSearch

サポートされている PPL コマンド

最適化エンジンでは、次の PPL コマンドがサポートされています。

Category コマンド
フィルタとプロジェクト where, fields, table
Order sort, reverse
制限 head
トップ N top, rare
コンピューティング eval
集計 stats, eventstats, addtotals, addcoltotals
重複排除 dedup
名前を変更 rename
テキスト replace
形式 fieldformat
Null 処理 fillnull
Parse parse, rex, grok, regex, patterns, spath
バケット化 bin, chart, timechart
結合 join, streamstats, lookup
結合 append, appendcol, appendpipe, multisearch, union
サブクエリ in サブクエリ、スカラーサブクエリ

サポートされている PPL 関数

最適化エンジンは、次のファミリーの関数をサポートします。

  • 文字列: upperlower、、lengthconcatsubstringtrimreplacereverseleftright、 など

  • 数学: absceilfloor、、roundsqrtpowlogexp、、三角関数など

  • 日時: nowdate、、yearmonthdaydate_formatdate_add datediffなど

  • 条件: ififnullnullifisnullcoalescecase

  • 型変換: casttostringtonumber

  • 集計: countsum、、avgminmaxpercentilestddev_popdistinct_count、 など

  • 関連性と全文: matchmatch_phrasemulti_matchquery_string

  • JSON: json_objectjson_extractjson_keysjson_array

  • コレクションと配列: arrayarray_length、、mvjoinsplitmvzipmvdedup

search コマンドは、最適化されたエンジンで部分的にサポートされています。テキストベースのマッチングでは機能しますが、数値、日付、または IP フィールドの比較はサポートされていません。

機能 ステータス
フリーテキスト用語検索 サポート
フレーズ検索 サポート
文字列フィールドの等価性 (=!=) サポート
文字列フィールド IN(...) サポート
文字列述語に対するブール演算子 サポート
数値フィールドの比較または範囲 サポート外。代わりに where を使用します。
日付フィールドの比較または範囲 サポート外。代わりに where を使用します。
ワイルドカードパターン サポートされていません
ヒント

テキスト以外のフィールドにはインラインsearchフィルターの代わりに where コマンドを使用します。where コマンドは、アクセラレーションのためにネイティブ分析エンジンを介して実行され、数値、日付、または IP フィールドのsearchフィルターはゼロ行を返します。

// Instead of: search source=logs Age > 50 // Use: search source=logs | where Age > 50

サポートされていない PPL コマンド

以下の PPL コマンドは、 最適化エンジンではサポートされていません。

convert, expand, flatten, mvexpand, mvcombine, nomv, graphlookup, trendline, describe, explain

高次配列関数 (transformmvmap、、reduceforallexistsfilter) はサポートされていません。

次の PPL クエリは、フルテキスト検索と集約を 1 つのステートメントで組み合わせます。

search source=logs "connection refused" | where status_code = 503 | stats count() by host, status_code | sort - count
ヒント

分散グループ化されたトップ N クエリでは、精度とパフォーマンスのトレードオフを調整できます。「分散トップ N クエリの精度を調整する」を参照してください。

SQL のサポート

最適化されたエンジンで SQL を使用するには、REST API、JDBC/ODBC ドライバー、Query Workbench を使用します。Grafana、Tableau、Amazon QuickSight などの BI ツールに SQL を使用します。SQL 構文の詳細については、OpenSearch ウェブサイトの OpenSearch SQL リファレンスを参照してください。 OpenSearch

サポートされている SQL ステートメント

最適化エンジンは、次の SQL ステートメントカテゴリをサポートしています。

  • SELECT (式、DISTINCT、エイリアス、リテラルを含む)

  • WHERE (IN, BETWEEN, AND/OR, NOT, IS NULL)

  • ORDER BY

  • LIMIT および OFFSET

  • GROUP BY

  • HAVING

  • CASE

  • LIKE および REGEXP

  • JOIN (INNER, LEFT, RIGHT, CROSS)

  • サブクエリ (WHEREFROM、および 内EXISTS)

  • UNION ALL

  • EXPLAIN

  • SHOW および DESCRIBE

サポートされている SQL 関数

最適化エンジンは、次のファミリーの関数をサポートします。

ファミリー 関数 (代表者)
String UPPER, LOWER, LENGTH, CONCAT, SUBSTRING, TRIM, REPLACE, LEFT, RIGHT, LOCATE, REVERSE, ASCII, CONCAT_WS, STRCMP, POSITION
数値演算 ABSCEILFLOORROUND、、MODSQRTPOWLOGLOG2LOG10EXPSIGNTRUNCATERAND、、三角関数CONV、、 CRC32
日付および時間 NOWCURDATEDATEYEAR、、MONTHDAYDATE_ADDDATE_SUBDATEDIFFTIMESTAMPDIFF、、CONVERT_TZ、、および DATE_FORMAT UNIX_TIMESTAMP40 以上の追加の日時関数
条件付き IF, IFNULL, NULLIF, ISNULL
型変換 CAST (INT、DOUBLE、STRING、DATE)、 TYPEOF
集計 COUNT, SUM, AVG, MIN, MAX, COUNT(DISTINCT), STDDEV_POP, STDDEV_SAMP, VAR_POP, VAR_SAMP, PERCENTILE, PERCENTILE_APPROX
関連性と全文 MATCH, MATCH_PHRASE, MULTI_MATCH, QUERY_STRING, SIMPLE_QUERY_STRING, MATCH_BOOL_PREFIX, MATCH_PHRASE_PREFIX, WILDCARD_QUERY
Window ROW_NUMBER

サポートされていない SQL 機能

Optimized エンジンでは、次の SQL 機能はサポートされていません。

機能 回避方法
UNION (個別) 代わりに UNION ALL を使用
MINUS 利用可能な回避策がない
フィルタリングされた集計 (FILTER (WHERE ...)) 代わりに SUM(CASE WHEN ... THEN ... END) を使用
RANK ウィンドウ関数 利用可能な回避策がない
DENSE_RANK ウィンドウ関数 利用可能な回避策がない

次の SQL クエリは、フルテキスト検索と集計を組み合わせて、サービス別にログエントリを検索およびカウントします。

SELECT service, region, COUNT(*) AS hits FROM logs WHERE MATCH(body, 'connection timeout') GROUP BY service, region ORDER BY hits DESC