@@ -162,8 +162,8 @@ module Database.Bloodhound.Types
162 , BucketAggregation(..)
162 , BucketAggregation(..)
163 , TermsAggregation(..)
163 , TermsAggregation(..)
164 , DateHistogramAggregation(..)
164 , DateHistogramAggregation(..)
165− , TermsResult
165+ , TermsResult(..)
166− , DateHistogramResult
166+ , DateHistogramResult(..)
169import Control.Applicative
169import Control.Applicative
@@ -1080,7 +1080,7 @@ instance Show TimeInterval where
1080 show Seconds = "s"
1080 show Seconds = "s"
1082instance ToJSON Aggregation where
1082instance ToJSON Aggregation where
1083− toJSON (TermsAgg (TermsAggregation term include exclude order minDocCount size shardSize collectMode executionHint aggs)) =
1083+ toJSON (TermsAgg (TermsAggregation term include exclude order minDocCount size shardSize collectMode executionHint termAggs)) =
1084 omitNulls ["terms" .= omitNulls [ toJSON' term,
1084 omitNulls ["terms" .= omitNulls [ toJSON' term,
1085 "include" .= toJSON include,
1085 "include" .= toJSON include,
1086 "exclude" .= toJSON exclude,
1086 "exclude" .= toJSON exclude,
@@ -1091,11 +1091,11 @@ instance ToJSON Aggregation where
1091 "collect_mode" .= toJSON collectMode,
1091 "collect_mode" .= toJSON collectMode,
1092 "execution_hint" .= toJSON executionHint
1092 "execution_hint" .= toJSON executionHint
1094− "aggs" .= toJSON aggs ]
1094+ "aggs" .= toJSON termAggs ]
1096 toJSON' x = case x of { Left y -> "field" .= toJSON y; Right y -> "script" .= toJSON y }
1096 toJSON' x = case x of { Left y -> "field" .= toJSON y; Right y -> "script" .= toJSON y }
1098− toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset aggs)) =
1098+ toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset dateHistoAggs)) =
1099 omitNulls ["date_histogram" .= omitNulls [ "field" .= toJSON field,
1099 omitNulls ["date_histogram" .= omitNulls [ "field" .= toJSON field,
1100 "interval" .= toJSON interval,
1100 "interval" .= toJSON interval,
1101 "format" .= toJSON format,
1101 "format" .= toJSON format,
@@ -1104,7 +1104,7 @@ instance ToJSON Aggregation where
1104 "pre_offset" .= toJSON preOffset,
1104 "pre_offset" .= toJSON preOffset,
1105 "post_offset" .= toJSON postOffset
1105 "post_offset" .= toJSON postOffset
1107− "aggs" .= toJSON aggs ]
1107+ "aggs" .= toJSON dateHistoAggs ]
1109type AggregationResults = M.Map Text Value
1109type AggregationResults = M.Map Text Value
@@ -1153,6 +1153,7 @@ instance FromJSON TermsResult where
1153 v .: "key" <*>
1153 v .: "key" <*>
1154 v .: "doc_count" <*>
1154 v .: "doc_count" <*>
1155 v .:? "aggregations"
1155 v .:? "aggregations"
1156+ parseJSON _ = mempty
1157instance FromJSON DateHistogramResult where
1158instance FromJSON DateHistogramResult where
1158 parseJSON (Object v) = DateHistogramResult <$>
1159 parseJSON (Object v) = DateHistogramResult <$>
@@ -1160,6 +1161,7 @@ instance FromJSON DateHistogramResult where
1160 v .:? "key_as_string" <*>
1161 v .:? "key_as_string" <*>
1161 v .: "doc_count" <*>
1162 v .: "doc_count" <*>
1162 v .:? "aggregations"
1163 v .:? "aggregations"
1164+ parseJSON _ = mempty
1164instance Monoid Filter where
1166instance Monoid Filter where
1165 mempty = IdentityFilter
1167 mempty = IdentityFilter
@@ -1244,11 +1246,11 @@ instance ToJSON Filter where
1244 toJSON (RangeFilter (FieldName fieldName) (Left halfRange) rangeExecution cache) =
1246 toJSON (RangeFilter (FieldName fieldName) (Left halfRange) rangeExecution cache) =
1245 object ["range" .=
1247 object ["range" .=
1246 object [fieldName .=
1248 object [fieldName .=
1247− object [key .= val]
1249+ object [rqFKey .= rqFVal]
1248 , "execution" .= toJSON rangeExecution
1250 , "execution" .= toJSON rangeExecution
1249 , "_cache" .= cache]]
1251 , "_cache" .= cache]]
1251− (key, val) = halfRangeToKV halfRange
1253+ (rqFKey, rqFVal) = halfRangeToKV halfRange
1253 toJSON (RangeFilter (FieldName fieldName) (Right range) rangeExecution cache) =
1255 toJSON (RangeFilter (FieldName fieldName) (Right range) rangeExecution cache) =
1254 object ["range" .=
1256 object ["range" .=
@@ -1462,8 +1464,8 @@ instance ToJSON RangeQuery where
1462 toJSON (RangeQuery (FieldName fieldName) (Left halfRange) boost) =
1464 toJSON (RangeQuery (FieldName fieldName) (Left halfRange) boost) =
1463 object [ fieldName .= conjoined ]
1465 object [ fieldName .= conjoined ]
1464 where conjoined = [ "boost" .= toJSON boost
1466 where conjoined = [ "boost" .= toJSON boost
1465− , key .= val ]
1467+ , rqKey .= rqVal ]
1466− (key, val) = halfRangeToKV halfRange
1468+ (rqKey, rqVal) = halfRangeToKV halfRange
1469instance ToJSON PrefixQuery where
1471instance ToJSON PrefixQuery where
@@ -1754,11 +1756,11 @@ instance (FromJSON a) => FromJSON (EsResult a) where
1756instance ToJSON Search where
1758instance ToJSON Search where
1757− toJSON (Search query sFilter sort aggs sTrackSortScores sFrom sSize) =
1759+ toJSON (Search query sFilter sort searchAggs sTrackSortScores sFrom sSize) =
1758 omitNulls [ "query" .= query
1760 omitNulls [ "query" .= query
1759 , "filter" .= sFilter
1761 , "filter" .= sFilter
1760 , "sort" .= sort
1762 , "sort" .= sort
1761− , "aggregations" .= aggs
1763+ , "aggregations" .= searchAggs
1762 , "from" .= sFrom
1764 , "from" .= sFrom
1763 , "size" .= sSize
1765 , "size" .= sSize
1764 , "track_scores" .= sTrackSortScores ]
1766 , "track_scores" .= sTrackSortScores ]