2015-05-01 16:04:55 -04:00
|
|
|
|
|
|
|
[[caching-heavy-aggregations]]
|
|
|
|
== Caching heavy aggregations
|
|
|
|
|
|
|
|
Frequently used aggregations (e.g. for display on the home page of a website)
|
|
|
|
can be cached for faster responses. These cached results are the same results
|
|
|
|
that would be returned by an uncached aggregation -- you will never get stale
|
|
|
|
results.
|
|
|
|
|
2015-06-26 10:31:38 -04:00
|
|
|
See <<shard-request-cache>> for more details.
|
2015-05-01 16:04:55 -04:00
|
|
|
|
|
|
|
[[returning-only-agg-results]]
|
|
|
|
== Returning only aggregation results
|
|
|
|
|
|
|
|
There are many occasions when aggregations are required but search hits are not. For these cases the hits can be ignored by
|
|
|
|
setting `size=0`. For example:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-06-21 11:24:06 -04:00
|
|
|
GET /twitter/tweet/_search
|
|
|
|
{
|
2015-05-01 16:04:55 -04:00
|
|
|
"size": 0,
|
|
|
|
"aggregations": {
|
|
|
|
"my_agg": {
|
|
|
|
"terms": {
|
|
|
|
"field": "text"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
2016-06-21 11:24:06 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[setup:twitter]
|
2015-05-01 16:04:55 -04:00
|
|
|
|
|
|
|
Setting `size` to `0` avoids executing the fetch phase of the search making the request more efficient.
|
|
|
|
|
|
|
|
[[agg-metadata]]
|
|
|
|
== Aggregation Metadata
|
|
|
|
|
|
|
|
You can associate a piece of metadata with individual aggregations at request time that will be returned in place
|
|
|
|
at response time.
|
|
|
|
|
|
|
|
Consider this example where we want to associate the color blue with our `terms` aggregation.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-06-21 11:24:06 -04:00
|
|
|
GET /twitter/tweet/_search
|
2015-05-01 16:04:55 -04:00
|
|
|
{
|
2016-06-21 11:24:06 -04:00
|
|
|
"size": 0,
|
|
|
|
"aggs": {
|
|
|
|
"titles": {
|
|
|
|
"terms": {
|
|
|
|
"field": "title"
|
|
|
|
},
|
|
|
|
"meta": {
|
|
|
|
"color": "blue"
|
|
|
|
}
|
2015-05-01 16:04:55 -04:00
|
|
|
}
|
2016-06-21 11:24:06 -04:00
|
|
|
}
|
2015-05-01 16:04:55 -04:00
|
|
|
}
|
|
|
|
--------------------------------------------------
|
2016-06-21 11:24:06 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[setup:twitter]
|
2015-05-01 16:04:55 -04:00
|
|
|
|
|
|
|
Then that piece of metadata will be returned in place for our `titles` terms aggregation
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"aggregations": {
|
|
|
|
"titles": {
|
|
|
|
"meta": {
|
|
|
|
"color" : "blue"
|
|
|
|
},
|
2016-06-21 11:24:06 -04:00
|
|
|
"doc_count_error_upper_bound" : 0,
|
|
|
|
"sum_other_doc_count" : 0,
|
2015-05-01 16:04:55 -04:00
|
|
|
"buckets": [
|
|
|
|
]
|
|
|
|
}
|
2016-06-21 11:24:06 -04:00
|
|
|
},
|
|
|
|
...
|
2015-05-01 16:04:55 -04:00
|
|
|
}
|
2015-06-26 10:31:38 -04:00
|
|
|
--------------------------------------------------
|
2016-06-21 11:24:06 -04:00
|
|
|
// TESTRESPONSE[s/\.\.\./"took": "$body.took", "timed_out": false, "_shards": "$body._shards", "hits": "$body.hits"/]
|