カラム形式の結果

SQLクエリの結果を表示する最も一般的な方法は、各個別のレコード/ドキュメントが1行/行を表す形式です。特定のフォーマットでは、Elasticsearch SQLは結果をカラム形式で返すことができます:1行は現在の結果ページから特定のカラムのすべての値を表します。

次のフォーマットはカラム指向で返すことができます:jsonyamlcbor、およびsmile

Python

  1. resp = client.sql.query(
  2. format="json",
  3. query="SELECT * FROM library ORDER BY page_count DESC",
  4. fetch_size=5,
  5. columnar=True,
  6. )
  7. print(resp)

Ruby

  1. response = client.sql.query(
  2. format: 'json',
  3. body: {
  4. query: 'SELECT * FROM library ORDER BY page_count DESC',
  5. fetch_size: 5,
  6. columnar: true
  7. }
  8. )
  9. puts response

Js

  1. const response = await client.sql.query({
  2. format: "json",
  3. query: "SELECT * FROM library ORDER BY page_count DESC",
  4. fetch_size: 5,
  5. columnar: true,
  6. });
  7. console.log(response);

コンソール

  1. POST /_sql?format=json
  2. {
  3. "query": "SELECT * FROM library ORDER BY page_count DESC",
  4. "fetch_size": 5,
  5. "columnar": true
  6. }

次のように返されます:

コンソール結果

  1. {
  2. "columns": [
  3. {"name": "author", "type": "text"},
  4. {"name": "name", "type": "text"},
  5. {"name": "page_count", "type": "short"},
  6. {"name": "release_date", "type": "datetime"}
  7. ],
  8. "values": [
  9. ["Peter F. Hamilton", "Vernor Vinge", "Frank Herbert", "Alastair Reynolds", "James S.A. Corey"],
  10. ["Pandora's Star", "A Fire Upon the Deep", "Dune", "Revelation Space", "Leviathan Wakes"],
  11. [768, 613, 604, 585, 561],
  12. ["2004-03-02T00:00:00.000Z", "1992-06-01T00:00:00.000Z", "1965-06-01T00:00:00.000Z", "2000-03-15T00:00:00.000Z", "2011-06-02T00:00:00.000Z"]
  13. ],
  14. "cursor": "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWWWdrRlVfSS1TbDYtcW9lc1FJNmlYdw==:BAFmBmF1dGhvcgFmBG5hbWUBZgpwYWdlX2NvdW50AWYMcmVsZWFzZV9kYXRl+v///w8="
  15. }

その後の呼び出しでcursorを使用する場合でも、オリエンテーションを保持するためにcolumnarパラメータを含める必要があります。つまり、最初のクエリはカラムオプションを記憶しません。

Python

  1. resp = client.sql.query(
  2. format="json",
  3. cursor="sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWWWdrRlVfSS1TbDYtcW9lc1FJNmlYdw==:BAFmBmF1dGhvcgFmBG5hbWUBZgpwYWdlX2NvdW50AWYMcmVsZWFzZV9kYXRl+v///w8=",
  4. columnar=True,
  5. )
  6. print(resp)

Js

  1. const response = await client.sql.query({
  2. format: "json",
  3. cursor:
  4. "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWWWdrRlVfSS1TbDYtcW9lc1FJNmlYdw==:BAFmBmF1dGhvcgFmBG5hbWUBZgpwYWdlX2NvdW50AWYMcmVsZWFzZV9kYXRl+v///w8=",
  5. columnar: true,
  6. });
  7. console.log(response);

コンソール

  1. POST /_sql?format=json
  2. {
  3. "cursor": "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWWWdrRlVfSS1TbDYtcW9lc1FJNmlYdw==:BAFmBmF1dGhvcgFmBG5hbWUBZgpwYWdlX2NvdW50AWYMcmVsZWFzZV9kYXRl+v///w8=",
  4. "columnar": true
  5. }

次のようになります:

コンソール結果

  1. {
  2. "values": [
  3. ["Dan Simmons", "Iain M. Banks", "Neal Stephenson", "Frank Herbert", "Frank Herbert"],
  4. ["Hyperion", "Consider Phlebas", "Snow Crash", "God Emperor of Dune", "Children of Dune"],
  5. [482, 471, 470, 454, 408],
  6. ["1989-05-26T00:00:00.000Z", "1987-04-23T00:00:00.000Z", "1992-06-01T00:00:00.000Z", "1981-05-28T00:00:00.000Z", "1976-04-21T00:00:00.000Z"]
  7. ],
  8. "cursor": "46ToAwFzQERYRjFaWEo1UVc1a1JtVjBZMmdCQUFBQUFBQUFBQUVXWjBaNlFXbzNOV0pVY21Wa1NUZDJhV2t3V2xwblp3PT3/////DwQBZgZhdXRob3IBBHRleHQAAAFmBG5hbWUBBHRleHQAAAFmCnBhZ2VfY291bnQBBGxvbmcBAAFmDHJlbGVhc2VfZGF0ZQEIZGF0ZXRpbWUBAAEP"
  9. }