HTTP API は、TSDB for InfluxDB® からデータをクエリするための主要な方法です。
データをクエリする他の方法については、コマンドラインインターフェイスおよびクライアントのドキュメントをご参照ください。
このセクションの例では、URL を使用してデータを転送するためのコマンドラインインターフェイスである curl を使用します。
クエリを実行するには、GET リクエストを /query パスに送信します。db URL パラメーターをターゲットデータベースに設定し、q URL パラメーターを検索文に設定します。POST リクエストを送信することもできます。パラメーターは GET リクエストの場合と同じで、URL パラメーターとして、または application/x-www-form-urlencoded 本文の一部として送信できます。次の例は、HTTP API を使用して、「HTTP API を使用したデータの書き込み」ドキュメントで使用されているデータベースをクエリする方法を示しています。
curl -G 'https://<network address>:3242/query?u=<username>&p=<password>&pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"TSDB for InfluxDB® は、JSON フォーマットで値を返します。クエリ結果は results 配列にあります。エラーが発生した場合、TSDB for InfluxDB® は error フィールドにエラーメッセージを返します。
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "cpu_load_short",
"columns": [
"time",
"value"
],
"values": [
[
"2015-01-29T21:55:43.702900257Z",
2
],
[
"2015-01-29T21:55:43.702900257Z",
0.55
],
[
"2015-06-11T20:46:02Z",
0.64
]
]
}
]
}
]
}URL に `pretty=true` を追加すると、JSON 出力が読みやすくなります。これは、デバッグや、curl などのツールで直接クエリを実行する場合に便利です。このパラメーターは不要なネットワーク帯域幅を消費するため、本番環境では使用しないでください。
複数のクエリ
単一の API 呼び出しで複数のクエリを TSDB for InfluxDB® に送信するには、各クエリをセミコロンで区切ります。例:
curl -G 'https://<network address>:3242/query?u=<username>&p=<password>&pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west';SELECT count(\"value\") FROM \"cpu_load_short\" WHERE \"region\"='us-west'"システムは以下を返します:
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "cpu_load_short",
"columns": [
"time",
"value"
],
"values": [
[
"2015-01-29T21:55:43.702900257Z",
2
],
[
"2015-01-29T21:55:43.702900257Z",
0.55
],
[
"2015-06-11T20:46:02Z",
0.64
]
]
}
]
},
{
"statement_id": 1,
"series": [
{
"name": "cpu_load_short",
"columns": [
"time",
"count"
],
"values": [
[
"1970-01-01T00:00:00Z",
3
]
]
}
]
}
]
}データをクエリするためのその他のオプション
タイムスタンプフォーマット
TSDB for InfluxDB® のすべてのデータは UTC で保存および表示されます。デフォルトでは、タイムスタンプは 2015-08-04T19:05:14.318570484Z のように、ナノ秒精度の RFC3339 UTC フォーマットで返されます。UNIX タイムスタンプを返すには、リクエストで epoch パラメーターを設定します。epoch の値は、精度を指定する文字列です。`h` は時間、`m` は分、`s` は秒、`ms` はミリ秒、`u` はマイクロ秒、`ns` はナノ秒です。たとえば、秒精度の UNIX フォーマットでタイムスタンプを返すには、次のようにします。
curl -G 'https://<network address>:3242/query?u=<username>&p=<password>' --data-urlencode "db=mydb" --data-urlencode "epoch=s" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"チャンキング
chunked=true クエリパラメーターを設定することで、チャンキングを有効にできます。これにより、結果が単一の応答ではなくバッチでストリーミングされます。結果は、シリーズごと、または 10,000 データポイントごとにチャンク化されます (どちらかの条件が先に満たされた時点で)。最大チャンクサイズを変更するには、chunk_size クエリパラメーターを目的のサイズに設定します。たとえば、20,000 データポイントのチャンクで結果を返すには、パラメーターを次のように設定します。
curl -G 'https://<network address>:3242/query?u=<username>&p=<password>' --data-urlencode "db=deluge" --data-urlencode "chunked=true" --data-urlencode "chunk_size=20000" --data-urlencode "q=SELECT * FROM liters"InfluxQL
データのクエリ方法を理解したところで、InfluxQL の詳細については、「データ探索」ドキュメントをご参照ください。HTTP API を使用したデータのクエリの詳細については、「HTTP API」ドキュメントをご参照ください。
InfluxDB® は InfluxData によって登録された商標です。InfluxData は TSDB for InfluxDB® と提携しておらず、TSDB for InfluxDB® を推奨するものでもありません。