Querying

드루이드에서 쿼리는 Queryable Nodes에 HTTP 요청으로 이루어짐

Queryable Nodes

  • Broker
  • Historical
  • Realtime
 curl -X POST '<queryable_host>:<port>/druid/v2/?pretty' -H 'Content-Type:application/json' -d @<query_json_file>

Availabel Queries

Aggregation Queries

  • Timeserise
  • TopN
  • GroupBy

Metadata Queries

  • Time Boundary
  • Segment Metadata
  • Datasource Metadata

Search Queries

  • Search

Query Cancellation

curl -X DELETE "http://host:port/druid/v2/{queryId}"

Query Errors

쿼리가 실패하면 status code가 500 으로 떨어짐

{
  "error" : "Query timeout",
  "errorMessage" : "Timeout waiting for task.",
  "errorClass" : "java.util.concurrent.TimeoutException",
  "host" : "druid1.example.com:8083"
}

Query JSON Format(common)

{
  "queryType": "",
  "dataSource": "",
  "granularity": "",
  "filter": { ... },
  "aggregations": [ { ... } ],
  "postAggregations": [ { ... } ],
  "intervals": [ "2012-01-01T00:00:00.000/2012-01-03T00:00:00.000" ],
  "context": ""
}

property

property description required?
queryType Query 종류(timeserise, topN, groupBy) O
dataSource DataSource 이름. O
granularity Query의 granularity X
filter See Filters X
aggregations See Aggregations X
postAggregations See Post Aggregations X
intervals Query의 Time Range. ISO-8601 Intervals. O
context An additional JSON Object which can be used to specify certain flags. X