@@ -1,4 +1,5 @@
11{-# LANGUAGE DeriveGeneric #-}
2+
23{-# LANGUAGE RecordWildCards #-}
34
45{-| Data types for describing actions and data structures performed to interact
@@ -175,14 +176,13 @@ module Database.Bloodhound.Types
175176 , HighlightTag(..)
176177 , HitHighlight
177178
178− , TermsResult
179− , DateHistogramResult
179+ , TermsResult(..)
180+ , DateHistogramResult(..)
180181 ) where
181182
182183import Control.Applicative
183184import Data.Aeson
184−import Data.Aeson.Types (Pair (..), emptyObject,
185− parseMaybe)
185+import Data.Aeson.Types (Pair, emptyObject, parseMaybe)
186186import qualified Data.ByteString.Lazy.Char8 as L
187187import Data.List (nub)
188188import Data.List.NonEmpty (NonEmpty (..))
@@ -1061,7 +1061,7 @@ data ExecutionHint = Ordinals
10611061 | GlobalOrdinals
10621062 | GlobalOrdinalsHash
10631063 | GlobalOrdinalsLowCardinality
1064− | Map deriving(Eq, Show)
1064+ | Map deriving (Eq, Show)
10651065
10661066data TimeInterval = Weeks
10671067 | Days
@@ -1153,7 +1153,7 @@ instance Show TimeInterval where
11531153 show Seconds = "s"
11541154
11551155instance ToJSON Aggregation where
1156− toJSON (TermsAgg (TermsAggregation term include exclude order minDocCount size shardSize collectMode executionHint aggs)) =
1156+ toJSON (TermsAgg (TermsAggregation term include exclude order minDocCount size shardSize collectMode executionHint termAggs)) =
11571157 omitNulls ["terms" .= omitNulls [ toJSON' term,
11581158 "include" .= toJSON include,
11591159 "exclude" .= toJSON exclude,
@@ -1164,11 +1164,11 @@ instance ToJSON Aggregation where
11641164 "collect_mode" .= toJSON collectMode,
11651165 "execution_hint" .= toJSON executionHint
11661166 ],
1167− "aggs" .= toJSON aggs ]
1167+ "aggs" .= toJSON termAggs ]
11681168 where
11691169 toJSON' x = case x of { Left y -> "field" .= toJSON y; Right y -> "script" .= toJSON y }
11701170
1171− toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset aggs)) =
1171+ toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset dateHistoAggs)) =
11721172 omitNulls ["date_histogram" .= omitNulls [ "field" .= toJSON field,
11731173 "interval" .= toJSON interval,
11741174 "format" .= toJSON format,
@@ -1177,7 +1177,7 @@ instance ToJSON Aggregation where
11771177 "pre_offset" .= toJSON preOffset,
11781178 "post_offset" .= toJSON postOffset
11791179 ],
1180− "aggs" .= toJSON aggs ]
1180+ "aggs" .= toJSON dateHistoAggs ]
11811181
11821182type AggregationResults = M.Map Text Value
11831183
@@ -1226,6 +1226,7 @@ instance FromJSON TermsResult where
12261226 v .: "key" <*>
12271227 v .: "doc_count" <*>
12281228 v .:? "aggregations"
1229+ parseJSON _ = mempty
12291230
12301231instance FromJSON DateHistogramResult where
12311232 parseJSON (Object v) = DateHistogramResult <$>
@@ -1233,6 +1234,7 @@ instance FromJSON DateHistogramResult where
12331234 v .:? "key_as_string" <*>
12341235 v .: "doc_count" <*>
12351236 v .:? "aggregations"
1237+ parseJSON _ = mempty
12361238
12371239instance Monoid Filter where
12381240 mempty = IdentityFilter
@@ -1317,11 +1319,11 @@ instance ToJSON Filter where
13171319 toJSON (RangeFilter (FieldName fieldName) (Left halfRange) rangeExecution cache) =
13181320 object ["range" .=
13191321 object [fieldName .=
1320− object [key .= val]
1322+ object [rqFKey .= rqFVal]
13211323 , "execution" .= toJSON rangeExecution
13221324 , "_cache" .= cache]]
13231325 where
1324− (key, val) = halfRangeToKV halfRange
1326+ (rqFKey, rqFVal) = halfRangeToKV halfRange
13251327
13261328 toJSON (RangeFilter (FieldName fieldName) (Right range) rangeExecution cache) =
13271329 object ["range" .=
@@ -1535,8 +1537,8 @@ instance ToJSON RangeQuery where
15351537 toJSON (RangeQuery (FieldName fieldName) (Left halfRange) boost) =
15361538 object [ fieldName .= conjoined ]
15371539 where conjoined = [ "boost" .= toJSON boost
1538− , key .= val ]
1539− (key, val) = halfRangeToKV halfRange
1540+ , rqKey .= rqVal ]
1541+ (rqKey, rqVal) = halfRangeToKV halfRange
15401542
15411543
15421544instance ToJSON PrefixQuery where
@@ -1827,16 +1829,17 @@ instance (FromJSON a) => FromJSON (EsResult a) where
18271829
18281830
18291831instance ToJSON Search where
1830− toJSON (Search query sFilter sort aggs highlight sTrackSortScores sFrom sSize) =
1832+ toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize) =
18311833 omitNulls [ "query" .= query
18321834 , "filter" .= sFilter
18331835 , "sort" .= sort
1834− , "aggregations" .= aggs
1836+ , "aggregations" .= searchAggs
18351837 , "highlight" .= highlight
18361838 , "from" .= sFrom
18371839 , "size" .= sSize
18381840 , "track_scores" .= sTrackSortScores]
18391841
1842+
18401843instance ToJSON FieldHighlight where
18411844 toJSON (FieldHighlight (FieldName fName) (Just fSettings)) =
18421845 object [ fName .= fSettings ]
@@ -1918,7 +1921,6 @@ highlightTagToPairs (Just (CustomTags (pre, post))) = [ "pre_tags" .= pre
19181921 , "post_tags" .= post]
19191922highlightTagToPairs Nothing = []
19201923
1921−
19221924instance ToJSON SortSpec where
19231925 toJSON (DefaultSortSpec
19241926 (DefaultSort (FieldName dsSortFieldName) dsSortOrder dsIgnoreUnmapped