Traffic API は、さまざまなクエリシナリオに対応する SQL ベースの検索構文を提供します。
URL
query?sql=SELECT brand, COUNT(*) FROM phone GROUP BY (brand)&kvpair=trace:INFO;formatType:json
-
この URL ではリクエストヘッダーとエンコーディングが省略されています。
-
この URL ではアプリケーションのホストアドレスが省略されています。
-
クエリパラメーターの定義と例については、「クエリパラメーター」セクションをご参照ください。
リクエストプロトコル
HTTP です。
リクエストメソッド
GET です。
サポートされる形式
JSON です。
署名メカニズム
認証署名の計算方法
|
パラメーター |
型 |
説明 |
|
accessUserName |
String |
ユーザー名です。[インスタンスの詳細] > [ネットワーク情報] ページで確認できます。 |
|
accessPassWord |
String |
パスワードです。[インスタンスの詳細] > [ネットワーク情報] ページで変更できます。 |
import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;
public class GenerateAuthorization {
public static void main(String[] args) throws Exception {
String accessUserName = "username";
String accessPassWord = "password";
String realmStr = "" + accessUserName + ":" + accessPassWord + "";
String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
System.out.println(authorization);
}
}
次の例は、想定される認証出力を示しています。
cm9vdDp******mdhbA==
HTTP リクエストでは、認証パラメーターに Basic プレフィックスを追加します。
例:
authorization: Basic cm9vdDp******mdhbA==
クエリパラメーター
|
パラメーター |
型 |
必須 |
説明 |
|
sql |
String |
はい |
詳細については、「クエリ句」をご参照ください。 |
|
kvpair |
String |
いいえ |
詳細については、「kvpair 句」をご参照ください。 |
クエリパラメーターの使用方法
-
sql: クエリ句を使用して、完全な SQL ステートメントを記述します。
レスポンスパラメーター
|
パラメーター |
型 |
説明 |
|
total_time |
Double |
クエリの総実行時間です。 |
|
covered_percent |
Double |
カバレッジ率です。 |
|
row_count |
int |
返される行数です。 |
curl の例
curl --location --request GET 'http://ha-cn-*******.public.ha.aliyuncs.com/query?sql=select * from index_hdf&kvpair=trace:INFO;format:full_json' \
--header 'authorization: Basic ******************' \
--header 'host: ha-cn-*******.public.ha.aliyuncs.com'
説明
-
この例ではパブリックネットワークエンドポイントを使用しています。詳細については、「ネットワーク情報」をご参照ください。
検索の例
正常なレスポンス
{
"total_time": 4.557,
"covered_percent": 1.0,
"row_count": 1,
"format_type": "full_json",
"search_info": {},
"trace": [],
"sql_result": {
"data": [
[
1
]
],
"column_name": [
"id"
],
"column_type": [
"int64"
]
},
"error_info": {
"ErrorCode": 0,
"Error": "ERROR_NONE",
"Message": ""
}
}
エラーレスポンス
{
"total_time": 15.96,
"covered_percent": 0.0,
"row_count": 0,
"format_type": "full_json",
"search_info": {},
"trace": [],
"sql_result": {
"data": [],
"column_name": [],
"column_type": []
},
"error_info": {
"ErrorCode": 8010,
"Error": "call sql plan service failed.",
"Message": "failed to get sql plan, error message is [IQUAN_EC_INTERNAL_ERROR] internal error : SQL validation failed. From line 1, column 15 to line 1, column 23: Object 'index_hdf' not found\nFrom line 1, column 15 to line 1, column 23: Object 'index_hdf' not found\norg.apache.flink.table.api.ValidationException: SQL validation failed. From line 1, column 15 to line 1, column 23: Object 'index_hdf' not found\n\tat org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:149)\n\tat org.apache.flink.table.planner.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:108)\n\tat org.apache.flink.table.planner.delegation.ParserImpl.validate(ParserImpl.java:91)\n\tat com.taobao.search.iquan.core.api.impl.SqlQueryableImpl$SqlWorkFlow.validateSql(SqlQueryableImpl.java:646)\n\tat com.taobao.search.iquan.core.api.impl.SqlQueryableImpl$SqlWorkFlow.process(SqlQueryableImpl.java:392)\n\tat com.taobao.search.iquan.core.api.impl.SqlQueryableImpl.select(SqlQueryableImpl.java:134)\n\tat com.taobao.search.iquan.client.common.service.SqlQueryService.sqlQuery(SqlQueryService.java:89)\n\tat com.taobao.search.iquan.client.IquanClient.sqlQuery(IquanClient.java:79)\nCaused by: org.apache.calcite.runtime.CalciteContextException: From line 1, column 15 to line 1, column 23: Object 'index_hdf' not found\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:422)\n\tat org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:467)\n\tat org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:883)\n\tat org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:868)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5032)\n\tat org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:179)\n\tat org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184)\n\tat org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1067)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1041)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3202)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3187)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3450)\n\tat org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)\n\tat org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1067)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1041)\n\tat org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1016)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:724)\n\tat org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:144)\n\t... 7 more\nCaused by: org.apache.calcite.sql.validate.SqlValidatorException: Object 'index_hdf' not found\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:422)\n\tat org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:467)\n\tat org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:560)\n\t... 26 more\n"
}
}
注意事項
-
クエリの長さが 30 KB を超える場合は、「検索処理用の RESTful API」をご使用ください。