druid数据查询

数据查询。

1.概览

Durid通过提供 http rest风格的查询方式去请求查询节点。通过json文件将查询内容表达出来,结构通过json格式返回,来查询Durid中的数据。通常查询时,发送Post请求到broker节点

 curl -X POST '<broker_host>:<port>/druid/v2/?pretty' -H 'Content-Type:application/json' -d @<query_json_file>

Druid的原生查询语言是基于HTTP的JSON,社区里已经提供了许多其他方式的查询。

Available Queries

Druid 有各种的查询方式,查询条件由json属性组成,针对于不同类型的查询,可以通过配置不同的json文件,或者设置json文件的各个属性来查询

聚合查询

  • Timeseries
  • TopN
  • GroupBy

元数据查询

  • Time Boundary
  • Segment Metadata
  • Datasource Metadata

搜索查询

  • Search

如何选择适合自己的查询方式

在可能的情况下,建议使用Timeseries和TopN查询而不是GroupBy。GroupBy是最灵活的查询方式,但也具有最差的性能。对于不需要对维度进行分组的聚合,Timeseries明显快于groupBy查询。对于单个维度的分组和排序,topN查询比groupBys更加优化。

取消查询

发送Post请求

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

查询失败

如果查询失败,将获得包含具有以下结构的JSON对象的HTTP 500响应:

{
  "error" : "Query timeout",
  "errorMessage" : "Timeout waiting for task.",
  "errorClass" : "java.util.concurrent.TimeoutException",
  "host" : "data-239:9001"
}

组件

在逐个介绍各种查询方式之前,先介绍查询会用到的各个组件,如:Filter、Aggregator、Post-aggregator、Query、Interval、和Context。每一个基本的组件都会包含详细的类型

Filter

Filter即过滤器,在查询语句中是一个json对象,用来对维度进行筛选,表示维度满足Filter的行是满足我们需求的数据。类似于SQL中的Where语句。

1.Selector Filter

Selector Filter的功能类似于Sql中的 where key = value 。Selector Filter的Json实例如下:

 "filter": { "type": "selector", "dimension": "url", "value": "/" }

2.Regex Filter

Regex Filter允许用户通过正则表达式来筛选维度,任何标准的java正则表达式都支持。

 "filter": { "type": "regex", "dimension": "url", "pattern": "<pattern-string>" }

3.Logical Expression Filter

Logical Expression Filter包含and or 和 not 三种过滤器,每一种都支持嵌套,可以构建丰富的逻辑表达式,并与sql的 and or not类似

"filter": { "type": "and", "fileds": [<filter>,<filter>,...] }
"filter": { "type": "or", "fileds": [<filter>,<filter>,...] }
"filter": { "type": "not", "fileds": [<filter>,<filter>,...] }

组合案例:

"filter": {
    "type": "and",
    "fields": [
        { "type": "selector", "dimension": "sample_dimension1", "value": "sample_value1" },
        { "type": "or",
        "fields": [
            { &#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值