@@ -45,6 +45,7 @@ module Database.Bloodhound.Types
45 , mkTermsAggregation
45 , mkTermsAggregation
46 , mkTermsScriptAggregation
46 , mkTermsScriptAggregation
47 , mkDateHistogram
47 , mkDateHistogram
48+ , mkCardinalityAggregation
48 , mkDocVersion
49 , mkDocVersion
49 , docVersionNumber
50 , docVersionNumber
50 , toMissing
51 , toMissing
@@ -310,6 +311,7 @@ module Database.Bloodhound.Types
310 , MissingAggregation(..)
311 , MissingAggregation(..)
311 , ValueCountAggregation(..)
312 , ValueCountAggregation(..)
312 , FilterAggregation(..)
313 , FilterAggregation(..)
314+ , CardinalityAggregation(..)
313 , DateHistogramAggregation(..)
315 , DateHistogramAggregation(..)
314 , DateRangeAggregation(..)
316 , DateRangeAggregation(..)
315 , DateRangeAggRange(..)
317 , DateRangeAggRange(..)
@@ -1694,6 +1696,7 @@ data Interval = Year
1694 | FractionalInterval Float TimeInterval deriving (Eq, Read, Show, Generic, Typeable)
1696 | FractionalInterval Float TimeInterval deriving (Eq, Read, Show, Generic, Typeable)
1696data Aggregation = TermsAgg TermsAggregation
1698data Aggregation = TermsAgg TermsAggregation
1699+ | CardinalityAgg CardinalityAggregation
1697 | DateHistogramAgg DateHistogramAggregation
1700 | DateHistogramAgg DateHistogramAggregation
1698 | ValueCountAgg ValueCountAggregation
1701 | ValueCountAgg ValueCountAggregation
1699 | FilterAgg FilterAggregation
1702 | FilterAgg FilterAggregation
@@ -1716,6 +1719,10 @@ data TermsAggregation = TermsAggregation { term :: Either Text Text
1716 , termAggs :: Maybe Aggregations
1719 , termAggs :: Maybe Aggregations
1717 } deriving (Eq, Read, Show, Generic, Typeable)
1720 } deriving (Eq, Read, Show, Generic, Typeable)
1722+data CardinalityAggregation = CardinalityAggregation { cardinalityField :: FieldName,
1723+ precisionThreshold :: Maybe Int
1724+ } deriving (Eq, Read, Show, Generic, Typeable)
1719data DateHistogramAggregation = DateHistogramAggregation { dateField :: FieldName
1726data DateHistogramAggregation = DateHistogramAggregation { dateField :: FieldName
1720 , dateInterval :: Interval
1727 , dateInterval :: Interval
1721 , dateFormat :: Maybe Text
1728 , dateFormat :: Maybe Text
@@ -1774,6 +1781,9 @@ mkTermsScriptAggregation t = TermsAggregation (Right t) Nothing Nothing Nothing
1774mkDateHistogram :: FieldName -> Interval -> DateHistogramAggregation
1781mkDateHistogram :: FieldName -> Interval -> DateHistogramAggregation
1775mkDateHistogram t i = DateHistogramAggregation t i Nothing Nothing Nothing Nothing Nothing Nothing
1782mkDateHistogram t i = DateHistogramAggregation t i Nothing Nothing Nothing Nothing Nothing Nothing
1784+mkCardinalityAggregation :: FieldName -> CardinalityAggregation
1785+mkCardinalityAggregation t = CardinalityAggregation t Nothing
1777instance ToJSON Version where
1787instance ToJSON Version where
1778 toJSON Version {..} = object ["number" .= number
1788 toJSON Version {..} = object ["number" .= number
1779 ,"build_hash" .= build_hash
1789 ,"build_hash" .= build_hash
@@ -1864,6 +1874,12 @@ instance ToJSON Aggregation where
1865 toJSON' x = case x of { Left y -> "field" .= y; Right y -> "script" .= y }
1875 toJSON' x = case x of { Left y -> "field" .= y; Right y -> "script" .= y }
1877+ toJSON (CardinalityAgg (CardinalityAggregation field precisionThreshold)) =
1878+ object ["cardinality" .= omitNulls [ "field" .= field,
1879+ "precisionThreshold" .= precisionThreshold
1867 toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset dateHistoAggs)) =
1883 toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset dateHistoAggs)) =
1868 omitNulls ["date_histogram" .= omitNulls [ "field" .= field,
1884 omitNulls ["date_histogram" .= omitNulls [ "field" .= field,
1869 "interval" .= interval,
1885 "interval" .= interval,