クエリ言語の紹介

edit

Elasticsearchは、クエリの実行に使用できるJSON形式のドメイン固有言語を提供します。これは​Query DSL​とも呼ばれます。クエリ言語は非常に広範囲にわたるため、最初はとっつきにくいかもしれませんが、いくつかの基本的な例から学習を実際に始めてみると良いでしょう。

直前の例に戻って、次のクエリを実行しました。

GET /bank/_search
{
  "query": { "match_all": {} }
}

上記を分析すると、`query`部分はクエリの定義を示しており、`match_all`部分は単純に実行するクエリのタイプです。`match_all`クエリは、指定したインデックス内のドキュメントをすべて検索するだけです。

`query`パラメータのほかに、検索結果に影響する別のパラメータも渡すことができます。上記のセクションの例では`sort`を渡しました。次の例では`size`を渡します。

GET /bank/_search
{
  "query": { "match_all": {} },
  "size": 1
}

`size`が指定されない場合、デフォルトで10になります。

次の例では、`match_all`を実行し、ドキュメント11~20が返されます。

GET /bank/_search
{
  "query": { "match_all": {} },
  "from": 10,
  "size": 10
}

`from`パラメータ(0で始まる)は開始するドキュメントインデックスを指定し、`size`パラメータは返すドキュメント数(fromパラメータで始まる)を指定します。この機能は、検索結果のページングを実装する際に使用します。`from`が指定されない場合、デフォルトで0になります。

次の例では、`match_all`を実行し、結果を預金残高で降順にソートして、上位10個(デフォルトのサイズ)のドキュメントを返します。

GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}