@@ -203,6 +203,7 @@ module Database.Bloodhound.Types
203203 , BucketAggregation(..)
204204 , TermsAggregation(..)
205205 , ValueCountAggregation(..)
206+ , FilterAggregation(..)
206207 , DateHistogramAggregation(..)
207208
208209 , Highlights(..)
@@ -1319,7 +1320,8 @@ data Interval = Year
13191320
13201321data Aggregation = TermsAgg TermsAggregation
13211322 | DateHistogramAgg DateHistogramAggregation
1322− | ValueCountAgg ValueCountAggregation deriving (Eq, Show)
1323+ | ValueCountAgg ValueCountAggregation
1324+ | FilterAgg FilterAggregation deriving (Eq, Show)
13231325
13241326
13251327data TermsAggregation = TermsAggregation { term :: Either Text Text
@@ -1345,9 +1347,14 @@ data DateHistogramAggregation = DateHistogramAggregation { dateField :: Fie
13451347 , dateAggs :: Maybe Aggregations
13461348 } deriving (Eq, Show)
13471349
1350+-- | See <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html> for more information.
13481351data ValueCountAggregation = FieldValueCount FieldName
13491352 | ScriptValueCount Script deriving (Eq, Show)
13501353
1354+-- | Single-bucket filter aggregations. See <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html#search-aggregations-bucket-filter-aggregation> for more information.
1355+data FilterAggregation = FilterAggregation { faFilter :: Filter
1356+ , faAggs :: Maybe Aggregations} deriving (Eq, Show)
1357+
13511358mkTermsAggregation :: Text -> TermsAggregation
13521359mkTermsAggregation t = TermsAggregation (Left t) Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
13531360
@@ -1424,6 +1431,9 @@ instance ToJSON Aggregation where
14241431 where v = case a of
14251432 (FieldValueCount (FieldName n)) -> object ["field" .= n]
14261433 (ScriptValueCount (Script s)) -> object ["script" .= s]
1434+ toJSON (FilterAgg (FilterAggregation filt ags)) =
1435+ omitNulls [ "filter" .= filt
1436+ , "aggs" .= ags]
14271437
14281438type AggregationResults = M.Map Text Value
14291439