翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サポートされているクエリ言語
最適化エンジンは、PPL (パイプ処理言語) と SQL をクエリ言語としてサポートしています。最適化エンジンは、ベクトル化された実行エンジンを通じて PPL と SQL の両方をネイティブに実行します。構文の完全なリファレンスについては、OpenSearch ウェブサイトの OpenSearch SQL および PPL ドキュメント
PPL サポート
最適化エンジンは PPL (パイプ処理言語) をネイティブに実行します。PPL は OpenSearch UI のプライマリクエリ言語であり、アラートや異常検出などのプラグインで使用されます。完全な PPL 構文については、OpenSearch ウェブサイトの OpenSearch PPL リファレンス
サポートされている 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 関数
最適化エンジンは、次のファミリーの関数をサポートします。
文字列:
upper、lower、、length、concat、substring、trim、replace、reverseleftright、 など数学:
abs、ceil、floor、、roundsqrt、powlogexp、、三角関数など日時:
now、date、、year、month、day、date_format、date_adddatediffなど条件:
if、ifnull、nullif、isnull、coalesce、case型変換:
cast、tostring、tonumber集計:
count、sum、、avg、min、max、percentilestddev_popdistinct_count、 など関連性と全文:
match、match_phrase、multi_match、query_stringJSON:
json_object、json_extract、json_keys、json_arrayコレクションと配列:
array、array_length、、mvjoinsplit、mvzip、mvdedup
検索コマンド
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
高次配列関数 (transform、mvmap、、reduce、forallexists、filter) はサポートされていません。
例
次の 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 リファレンス
サポートされている SQL ステートメント
最適化エンジンは、次の SQL ステートメントカテゴリをサポートしています。
SELECT(式、DISTINCT、エイリアス、リテラルを含む)WHERE(IN,BETWEEN,AND/OR,NOT,IS NULL)ORDER BYLIMITおよびOFFSETGROUP BYHAVINGCASELIKEおよびREGEXPJOIN(INNER,LEFT,RIGHT,CROSS)サブクエリ (
WHERE、FROM、および 内EXISTS)UNION ALLEXPLAINSHOWおよびDESCRIBE
サポートされている SQL 関数
最適化エンジンは、次のファミリーの関数をサポートします。
| ファミリー | 関数 (代表者) |
|---|---|
| String | UPPER, LOWER, LENGTH, CONCAT, SUBSTRING, TRIM, REPLACE, LEFT, RIGHT, LOCATE, REVERSE, ASCII, CONCAT_WS, STRCMP, POSITION |
| 数値演算 | ABS、CEIL、FLOOR、ROUND、、MOD、SQRT、POW、LOG、LOG2、LOG10、EXP、SIGN、TRUNCATERAND、、三角関数CONV、、 CRC32 |
| 日付および時間 | NOW、CURDATE、DATE、YEAR、、MONTH、DAY、DATE_ADD、DATE_SUB、DATEDIFF、TIMESTAMPDIFF、、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