druid/docs/SearchQuery.md

2.1 KiB

A search query returns dimension values that match the search specification.

<code>{
  "queryType": "search",
  "dataSource": "sample_datasource",
  "granularity": "day",
  "searchDimensions": [
    "dim1",
    "dim2"
  ],
  "query": {
    "type": "insensitive_contains",
    "value": "Ke"
  },
  "sort" : {
    "type": "lexicographic"
  },
  "intervals": [
    "2013-01-01T00:00:00.000/2013-01-03T00:00:00.000"
  ]
}
</code>

There are several main parts to a search query:

property description required?
queryType This String should always be “search”; this is the first thing Druid looks at to figure out how to interpret the query yes
dataSource A String defining the data source to query, very similar to a table in a relational database yes
granularity Defines the granularity of the query. See Granularities yes
filter See Filters no
intervals A JSON Object representing ISO-8601 Intervals. This defines the time ranges to run the query over. yes
searchDimensions The dimensions to run the search over. Excluding this means the search is run over all dimensions. no
query See SearchQuerySpec. yes
sort How the results of the search should sorted. Two possible types here are “lexicographic” and “strlen”. yes
context An additional JSON Object which can be used to specify certain flags. no

The format of the result is:

<code>[
  {
    "timestamp": "2012-01-01T00:00:00.000Z",
    "result": [
      {
        "dimension": "dim1",
        "value": "Ke$ha"
      },
      {
        "dimension": "dim2",
        "value": "Ke$haForPresident"
      }
    ]
  },
  {
    "timestamp": "2012-01-02T00:00:00.000Z",
    "result": [
      {
        "dimension": "dim1",
        "value": "SomethingThatContainsKe"
      },
      {
        "dimension": "dim2",
        "value": "SomethingElseThatContainsKe"
      }      
    ]
  }
]
</code>