OpenSearch のクエリ: Lucene とクエリ DSL
DynoTable は、OpenSearch の 2 つのクエリ言語のどちらでも OpenSearch のクエリを実行します: 検索ボックスでは Lucene のクエリ構文、クエリエディタでは JSON のクエリ DSL です。フィルターピルと時間範囲で、どちらも絞り込めます。
インデックスはテーブルと同じくタブで開きます。グリッド、ページング、選択、クイックビュー、最後まで実行も同じように動きます。ツールバーはアイテムではなくドキュメントを数え、N of M docs と表示します。OpenSearch は検索の正確な総数を返すからです。
インデックスを開く
⌘K を押して、インデックス名の一部を入力します。インデックスはテーブルの下の専用のインデックスグループに並び、それぞれにドキュメント数とサイズが表示されます。プロファイルが複数のドメインやコレクションに届く場合は、各行にターゲットの名前が表示されます。
- エイリアスの行には エイリアス と、その背後のインデックスが表示されます。インデックスと同じように開けますが、エイリアス経由では編集、一括編集、インポートはできません。それにはインデックス自体を開いてください。
- 名前を最後まで入力すると、同じ名前のテーブルがなくてもそのインデックスが直接開きます。
- アプリの起動後に作成したインデックスは、次に ⌘K を開いたときに表示されます。

グリッド
_idが先頭に来ます。 ドキュメントのキーで、パーティションキーと同じ#のマークが付きます。- サーバー側で並べ替えます。 列ヘッダーのメニューで昇順または降順に並べ替えます。読み込み済みの行だけでなく、インデックス全体が並べ替えられます。テキストフィールドは
keywordサブフィールドで並べ替えます。それがないテキストフィールド、object、nestedのフィールドは並べ替えられず、メニューに理由が表示されます。 - 列を減らせばページも小さく。 列を非表示にすると、表示中のフィールドだけを OpenSearch に求めるため、検索がもう一度実行されます。エディタとエクスポートは引き続きドキュメント全体を読み取ります。
- 入れ子の値。
objectの各フィールドには、オブジェクト名とドットを付けた名前の専用の列ができます。nestedフィールドの下のフィールドには専用の列がありません。
行で Space を押すと クイックビュー が開き、↑ / ↓ で行を移動します。ドキュメントを変更するにはエディタで開きます。

Lucene で検索する
検索ボックスは Lucene のクエリ構文を受け付けます: status:shipped、
total:[100 TO *]、AND / OR / NOT、ワイルドカード、引用符で囲んだフレーズ。
↩ で実行し、/ でボックスにカーソルを移します。入力中に構文が色分けされ、ボックス末尾の ? でよく使う 8 つのクエリの形を確認できます。
ボックスは入力に合わせて補完します:
- 単語だけなら、インデックスのマッピングからフィールド名を候補に出します。
field:の後には、そのフィールドが持つ値を候補に出します。数値、日付、 IP のフィールドでは[* TO *]や>=のような範囲の形が先に出ます。- 句を書き終えた後には
AND、OR、NOTを候補に出します。
Tab で候補を確定します。
フリーテキストの検索は関連度で結果を並べ、各セルで一致したテキストをハイライトします。列で並べ替えると、結果はその並び順に従います。

フィルターピルと時間範囲
フィルターを追加は 1 つのフィールドに条件を作ります。演算子はテーブルと同じで、比較、between、in、begins_with、contains、そして 2 つの存在チェックです。マッピングが各フィールドの型を決めるので、型の選択はありません。ピルと検索ボックスは組み合わさり、ドキュメントは両方に一致する必要があります。
date フィールドを持つインデックスには、検索ボックスの隣に時間範囲のピルが付きます:
- 全期間、過去 15 分から過去 1 年間までのプリセット、または 2 か月表示のカレンダーを使うカスタム範囲…。
- プリセットは検索を実行するたびに前へずれます。さらに読み込むは最初のページが使った範囲を保つので、ページ間で食い違いません。
- ピルは
@timestamp、次にtimestamp、次に最初の日付フィールドを使います。日付フィールドが複数あれば、ピル上でフィールドを選びます。

クエリを自分で書く
⌘⇧M を押すか、タブヘッダーで Query を選ぶと、ピルがクエリエディタに切り替わります。どちらの書き方も受け付けます:
- クエリ DSL:
{で始まる JSON。{"match": {"title": "refund"}}のような句だけでも、本文全体でもかまいません。実行されるのはqueryオブジェクトだけです。size、sort、ページングは DynoTable が受け持ち、それらを含めるとそう伝えます。 - Lucene: それ以外。検索ボックスと同じ構文です。
エディタは入力に合わせてクエリを確認します: 壊れた JSON、入力ミスと思われる不明な句の名前(修正つき)、マッピングにないフィールド。Run を無効にするのは本当のエラーだけで、ほかは警告です。⌘↩ でクエリを実行し、 ⌘⇧F で JSON を整形します。
エディタの下には、実行したクエリの件数が ~N docs と表示されます。

保存したクエリと履歴
- 保存したクエリには、このインデックスのフィールド名を入れたスタータークエリ(
match、multi_match、exists、prefixなど)が最初から入っています。自分のクエリもその横に保存できます。 - 履歴には、このインデックスで実行したすべてのクエリが残ります。1 つを選ぶとエディタに入り、実行するまでは実行されません。
AI を設定していれば、このエディタで AI の自動補完と ⌘⇧K のインライン編集が使えます。
検索をコードとしてコピーする
ツールバーのコードは、実行した検索を REST リクエスト(Dev Tools の表記)、
curl、JavaScript クライアント、Python クライアントとしてエクスポートします。どれもプロファイルの認証情報で署名され、セルフホストのエンドポイントは署名なしのままです。
スニペットに含まれるのは query だけです。ページング、並べ替え、ハイライトはグリッドが付け加えるものなので、スニペットはクラスターの既定のページを返します。同じダイアログでインデックス定義もエクスポートできます。














