OpenSearch Dashboards Query Language (DQL) チートシート
基本検索
機能 |
DQL構文 |
説明/例 |
単一ターム検索 |
error |
error という単語を含むドキュメントを検索します (デフォルトフィールドまたは全フィールド)。 |
複数ターム検索 (OR) |
error warning |
error または warning を含むドキュメントを検索します (単語間のデフォルトはOR結合)。 |
完全一致フレーズ検索 |
"system down" |
system down という連続したフレーズを含むドキュメントを検索します。 |
フィールド指定検索
機能 |
DQL構文 |
説明/例 |
特定フィールド検索 |
status: error |
status フィールドの値が error であるドキュメントを検索します。 |
フィールド存在確認 |
user_id:* |
user_id フィールドが存在するドキュメントを検索します。 |
スペースを含むフィールド名 |
http*host: "example.com" |
http host のようなスペースを含むフィールド名 (ワイルドカード使用) で "example.com" を検索します。 |
ワイルドカード (*
)
*
は0文字以上の任意の文字列にマッチします。単一文字ワイルドカード (?
) はサポートされません。
機能 |
DQL構文 |
説明/例 |
ターム内ワイルドカード |
host: server* |
host フィールドで server から始まる値 (例: server1 , server-eu ) を含むドキュメントを検索します。 |
|
path: *.log |
path フィールドで .log で終わる値を含むドキュメントを検索します。 |
フィールド名ワイルドカード |
log*level: error |
log で始まり level で終わるフィールド名 (例: log_level ) の値が error のドキュメントを検索します。 |
非対応 |
"error * occurred" |
フレーズ検索内でのワイルドカードはサポートされません。 |
範囲検索
機能 |
DQL構文 |
説明/例 |
数値範囲 (含む) |
response_time >= 500 and response_time <= 1000 |
response_time が 500 以上 1000 以下のドキュメントを検索します。 |
数値範囲 (含まない) |
cpu_usage > 0.9 |
cpu_usage が 0.9 より大きいドキュメントを検索します。 |
日付範囲 |
timestamp >= "2023-10-26T10:00:00Z" and timestamp < "2023-10-26T11:00:00Z" |
指定されたISO 8601形式の日時範囲内のドキュメントを検索します。 |
値の否定 |
not status: 200 |
status が 200 でないドキュメント、または status フィールドを持たないドキュメントを検索します。 |
値の否定 (フィールド存在) |
status:* and not status: 200 |
status フィールドが存在し、かつその値が 200 でないドキュメントを検索します。 |
非対応 |
{500 TO 1000} |
Luceneのような排他的範囲構文 ({} ) はサポートされません。 |
ブール演算子
大文字・小文字は区別されません (AND
と and
は同じ意味)。
機能 |
DQL構文 |
説明/例 |
AND |
level: error and service: auth |
level が error であり、かつ service が auth であるドキュメントを検索します。 |
OR (デフォルト) |
level: error or level: warning |
level が error である、または level が warning であるドキュメントを検索します。 |
|
error warning (フィールド指定なし) |
error または warning を含むドキュメント (デフォルトOR)。 |
NOT |
not country: US |
country が US でないドキュメント、または country フィールドを持たないドキュメントを検索します。 |
|
level: error and not service: test |
level が error であり、かつ service が test でないドキュメントを検索します。 |
演算子の優先順位 |
NOT > AND > OR
|
a or b and not c は a or (b and (not c)) と解釈されます。 |
グループ化 (括弧) |
(service: api or service: web) and level: error |
括弧内の式 (service: api or service: web ) を優先的に評価します。 |
特殊文字とエスケープ
機能 |
DQL構文 |
説明/例 |
予約文字 |
\ , ( , ) , : , < , > , " , *
|
これらの文字自体を検索値として使いたい場合は、バックスラッシュ \ でエスケープします。 |
エスケープ |
path: "C:\\Program Files\\App" |
\ を文字として検索するために \\ とエスケープします。 |
|
product_id: "item\*123" |
* を文字として検索するために \* とエスケープします。 |
ネスト/オブジェクト
機能 |
DQL構文 |
説明/例 |
オブジェクトフィールド |
user.id: 123 |
user オブジェクト内の id フィールドが 123 であるドキュメントを検索します (ドット記法)。 |
ネストされたフィールド |
comments: {author: "John Doe"} |
comments (nested型) 内のオブジェクトで author が "John Doe" であるものを含むドキュメントを検索。 |
ネスト内複数条件 (AND) |
comments: {author: "John Doe" and rating >= 4} |
comments 内の 同一 オブジェクトが author: "John Doe" かつ rating >= 4 を満たすドキュメント。 |
ネストと通常フィールド |
comments: {author: "John Doe"} and status: approved |
comments 内に author: "John Doe" を含むオブジェクトがあり、かつ status が approved のドキュメント。 |
二重ネスト |
items: {variants: {color: red}} |
items (nested) 内の variants (nested) 内のオブジェクトで color が red のものを検索。 |
その他
機能 |
DQL構文 |
説明/例 |
空白の無視 |
|
status: error と status:error は同じ意味です。 フィールド名と値の間、演算子の前後の空白は基本的に無視されます。 |
非対応機能 |
|
正規表現, ファジー検索 (~ ), 近接検索 (~N ), ブースティング (^ ), 必須/禁止演算子 (+ , - ) はDQLではサポートされていません (これらはLucene構文の機能です)。 |