微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在德鲁伊查询中同时添加“和”和“或”过滤器?

如何解决如何在德鲁伊查询中同时添加“和”和“或”过滤器?

我正在尝试编写一个druid查询(json文件),该查询同时是“ and”和“ or”过滤器。我尝试过:

{
  "queryType": "select","dataSource": "timeseries_db","intervals": ["2020-09-08T17:00:00\/2020-09-08T17:30:00"],"pagingSpec":{ "threshold":100},"filter": {
    "type": "and","fields": [
      {
        "type": "selector","dimension": "orgid","value": "864e1875-ea80-455b-a835-f75bed0df2a7"
      },"filter": {
        "type": "or","fields": [
         {
           "type": "selector","dimension": "host_name","value": "testname.82fae43ca"
         },{
           "type": "selector","value": "testname.09db12d4a"
         }
        ]
      }
    ]
  },"granularity": "all"
}

我想获取组织ID为864e1875-ea80-455b-a835-f75bed0df2a7且主机名为testname.82fae43ca或testname.09db12d4a的记录

当我运行此查询时,它引发错误提示“类型”丢失。但是我包括了“类型”。任何帮助表示赞赏。

解决方法

您不需要在"filter"过滤器内添加额外的and。试试这个:

{
  "queryType": "select","dataSource": "timeseries_db","intervals": ["2020-09-08T17:00:00\/2020-09-08T17:30:00"],"pagingSpec":{ "threshold":100},"filter": {
    "type": "and","fields": [
      {
        "type": "selector","dimension": "orgid","value": "864e1875-ea80-455b-a835-f75bed0df2a7"
      },{
        "type": "or","fields": [
         {
           "type": "selector","dimension": "host_name","value": "testname.82fae43ca"
         },{
           "type": "selector","value": "testname.09db12d4a"
         }
        ]
      }
    ]
  },"granularity": "all"
}

另一种方法是在in中使用selector过滤器,而不是两个or过滤器:

{
  "queryType": "select",{
        "type": "in","values": ["testname.82fae43ca","testname.09db12d4a"]
      }
    ]
  },"granularity": "all"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。