git.iko.soy/typeable/bloodhound
on master help sign in
Clean up script fields.
commit2be0cb901442de07f8a291ddf9f287b1a79381d8 authorWill Jones <will@sacharissa.co.uk> dateWed 12 Jul 2017, 16:35 (9 years ago) parentdda50b1
2 files changed+64−58
src/Database/V5/Bloodhound/Client.hs+3−3 src/Database/V5/Bloodhound/Types.hs+61−55
src/Database/V5/Bloodhound/Client.hs+3−3
@@ -1044,7 +1044,7 @@ scanSearch indexName mappingName search = do
10441044-- >>> mkSearch (Just query) Nothing
10451045-- Search {queryBody = Just (TermQuery (Term {termField = "user", termValue = "bitemyapp"}) Nothing), filterBody = Nothing, sortBody = Nothing, aggBody = Nothing, highlight = Nothing, trackSortScores = False, from = From 0, size = Size 10, searchType = SearchTypeQueryThenFetch, fields = Nothing, source = Nothing}
10461046mkSearch :: Maybe Query -> Maybe Filter -> Search
1047−mkSearch query filter = Search query filter Nothing Nothing Nothing False (From 0) (Size 10) SearchTypeQueryThenFetch Nothing Nothing Nothing
1047+mkSearch query filter = Search query filter Nothing Nothing Nothing False (From 0) (Size 10) SearchTypeQueryThenFetch Nothing Nothing Nothing Nothing
10481048
10491049-- | 'mkAggregateSearch' is a helper function that defaults everything in a 'Search' except for
10501050-- the 'Query' and the 'Aggregation'.
@@ -1054,7 +1054,7 @@ mkSearch query filter = Search query filter Nothing Nothing Nothing False (From
10541054-- TermsAgg (TermsAggregation {term = Left "user", termInclude = Nothing, termExclude = Nothing, termOrder = Nothing, termMinDocCount = Nothing, termSize = Nothing, termShardSize = Nothing, termCollectMode = Just BreadthFirst, termExecutionHint = Nothing, termAggs = Nothing})
10551055-- >>> let myAggregation = mkAggregateSearch Nothing $ mkAggregations "users" terms
10561056mkAggregateSearch :: Maybe Query -> Aggregations -> Search
1057−mkAggregateSearch query mkSearchAggs = Search query Nothing Nothing (Just mkSearchAggs) Nothing False (From 0) (Size 0) SearchTypeQueryThenFetch Nothing Nothing Nothing
1057+mkAggregateSearch query mkSearchAggs = Search query Nothing Nothing (Just mkSearchAggs) Nothing False (From 0) (Size 0) SearchTypeQueryThenFetch Nothing Nothing Nothing Nothing
10581058
10591059-- | 'mkHighlightSearch' is a helper function that defaults everything in a 'Search' except for
10601060-- the 'Query' and the 'Aggregation'.
@@ -1063,7 +1063,7 @@ mkAggregateSearch query mkSearchAggs = Search query Nothing Nothing (Just mkSear
10631063-- >>> let testHighlight = Highlights Nothing [FieldHighlight (FieldName "message") Nothing]
10641064-- >>> let search = mkHighlightSearch (Just query) testHighlight
10651065mkHighlightSearch :: Maybe Query -> Highlights -> Search
1066−mkHighlightSearch query searchHighlights = Search query Nothing Nothing Nothing (Just searchHighlights) False (From 0) (Size 10) SearchTypeQueryThenFetch Nothing Nothing Nothing
1066+mkHighlightSearch query searchHighlights = Search query Nothing Nothing Nothing (Just searchHighlights) False (From 0) (Size 10) SearchTypeQueryThenFetch Nothing Nothing Nothing Nothing
10671067
10681068-- | 'pageSearch' is a helper function that takes a search and assigns the from
10691069-- and size fields for the search. The from parameter defines the offset
src/Database/V5/Bloodhound/Types.hs+61−55
@@ -151,6 +151,12 @@ module Database.V5.Bloodhound.Types
151151 , RegexpFlag(..)
152152 , FieldName(..)
153153 , Script(..)
154+ , ScriptLanguage(..)
155+ , ScriptInline(..)
156+ , ScriptId(..)
157+ , ScriptParams(..)
158+ , ScriptParamName
159+ , ScriptParamValue
154160 , IndexName(..)
155161 , IndexSelection(..)
156162 , NodeSelection(..)
@@ -186,12 +192,6 @@ module Database.V5.Bloodhound.Types
186192 , FunctionScoreFunctions(..)
187193 , ComponentFunctionScoreFunction(..)
188194 , FunctionScoreFunction(..)
189− , FunctionScoreScript(..)
190− , FunctionScoreScriptInline(..)
191− , FunctionScoreScriptId(..)
192− , FunctionScoreScriptParams(..)
193− , FunctionScoreScriptParamName
194− , FunctionScoreScriptParamValue
195195 , Weight(..)
196196 , Seed(..)
197197 , FieldValueFactor(..)
@@ -1013,11 +1013,30 @@ newtype QueryString = QueryString Text deriving (Eq, Generic, Read, Show, ToJSON
10131013-}
10141014newtype FieldName = FieldName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)
10151015
1016+type ScriptFieldName = Text
10161017
1017−{-| 'Script' is often used in place of 'FieldName' to specify more
1018−complex ways of extracting a value from a document.
1019−-}
1020−newtype Script = Script { scriptText :: Text } deriving (Eq, Read, Show, Generic, Typeable)
1018+data Script =
1019+ Script { scriptLanguage :: Maybe ScriptLanguage
1020+ , scriptInline :: Maybe ScriptInline
1021+ , scriptStored :: Maybe ScriptId
1022+ , scriptParams :: Maybe ScriptParams
1023+ } deriving (Eq, Read, Show, Generic, Typeable)
1024+
1025+newtype ScriptLanguage =
1026+ ScriptLanguage Text deriving (Eq, Read, Show, Generic, Typeable, ToJSON, FromJSON)
1027+
1028+newtype ScriptInline =
1029+ ScriptInline Text deriving (Eq, Read, Show, Generic, Typeable, ToJSON, FromJSON)
1030+
1031+newtype ScriptId =
1032+ ScriptId Text deriving (Eq, Read, Show, Generic, Typeable, ToJSON, FromJSON)
1033+
1034+newtype ScriptParams =
1035+ ScriptParams (HM.HashMap ScriptParamName ScriptParamValue)
1036+ deriving (Eq, Read, Show, Generic, Typeable)
1037+
1038+type ScriptParamName = Text
1039+type ScriptParamValue = Value
10211040
10221041{-| 'CacheName' is used in 'RegexpFilter' for describing the
10231042 'CacheKey' keyed caching behavior.
@@ -1138,6 +1157,7 @@ data Search = Search { queryBody :: Maybe Query
11381157 , size :: Size
11391158 , searchType :: SearchType
11401159 , fields :: Maybe [FieldName]
1160+ , scriptFields :: Maybe (HM.HashMap ScriptFieldName Script)
11411161 , source :: Maybe Source
11421162 , suggestBody :: Maybe Suggest -- ^ Only one Suggestion request / response per Search is supported.
11431163 } deriving (Eq, Read, Show, Generic, Typeable)
@@ -1475,30 +1495,11 @@ data ComponentFunctionScoreFunction =
14751495 } deriving (Eq, Read, Show, Generic, Typeable)
14761496
14771497data FunctionScoreFunction =
1478− FunctionScoreFunctionScript FunctionScoreScript
1498+ FunctionScoreFunctionScript Script
14791499 | FunctionScoreFunctionRandom Seed
14801500 | FunctionScoreFunctionFieldValueFactor FieldValueFactor
14811501 deriving (Eq, Read, Show, Generic, Typeable)
14821502
1483−data FunctionScoreScript =
1484− FunctionScoreScript { functionScoreScriptInline :: Maybe FunctionScoreScriptInline
1485− , functionScoreScriptStored :: Maybe FunctionScoreScriptId
1486− , functionScoreScriptParams :: Maybe FunctionScoreScriptParams
1487− } deriving (Eq, Read, Show, Generic, Typeable)
1488−
1489−newtype FunctionScoreScriptInline =
1490− FunctionScoreScriptInline Text deriving (Eq, Read, Show, Generic, Typeable, ToJSON, FromJSON)
1491−
1492−newtype FunctionScoreScriptId =
1493− FunctionScoreScriptId Text deriving (Eq, Read, Show, Generic, Typeable, ToJSON, FromJSON)
1494−
1495−newtype FunctionScoreScriptParams =
1496− FunctionScoreScriptParams (HM.HashMap FunctionScoreScriptParamName FunctionScoreScriptParamValue)
1497− deriving (Eq, Read, Show, Generic, Typeable)
1498−
1499−type FunctionScoreScriptParamName = Text
1500−type FunctionScoreScriptParamValue = Value
1501−
15021503newtype Weight =
15031504 Weight Float deriving (Eq, Read, Show, Generic, Typeable, ToJSON, FromJSON)
15041505
@@ -1814,6 +1815,7 @@ data Hit a =
18141815 , hitDocId :: DocId
18151816 , hitScore :: Score
18161817 , hitSource :: Maybe a
1818+ , hitFields :: Maybe (HM.HashMap Text [Value])
18171819 , hitHighlight :: Maybe HitHighlight } deriving (Eq, Read, Show, Generic, Typeable)
18181820
18191821data ShardResult =
@@ -2092,7 +2094,7 @@ instance ToJSON Aggregation where
20922094 toJSON (ValueCountAgg a) = object ["value_count" .= v]
20932095 where v = case a of
20942096 (FieldValueCount (FieldName n)) -> object ["field" .= n]
2095− (ScriptValueCount (Script s)) -> object ["script" .= s]
2097+ (ScriptValueCount s) -> object ["script" .= s]
20962098 toJSON (FilterAgg (FilterAggregation filt ags)) =
20972099 omitNulls [ "filter" .= filt
20982100 , "aggs" .= ags]
@@ -2955,27 +2957,29 @@ parseFunctionScoreFunction o =
29552957 singleRandom o' = FunctionScoreFunctionRandom <$> o' .: "seed"
29562958 singleFieldValueFactor = pure . FunctionScoreFunctionFieldValueFactor
29572959
2958−instance ToJSON FunctionScoreScript where
2959− toJSON (FunctionScoreScript inline stored params) =
2960+instance ToJSON Script where
2961+ toJSON (Script lang inline stored params) =
29602962 object [ "script" .= omitNulls base ]
2961− where base = [ "inline" .= inline
2963+ where base = [ "lang" .= lang
2964+ , "inline" .= inline
29622965 , "stored" .= stored
29632966 , "params" .= params ]
29642967
2965−instance FromJSON FunctionScoreScript where
2966− parseJSON = withObject "FunctionScoreScript" parse
2968+instance FromJSON Script where
2969+ parseJSON = withObject "Script" parse
29672970 where parse o = o .: "script" >>= \o' ->
2968− FunctionScoreScript
2969− <$> o' .:? "inline"
2971+ Script
2972+ <$> o' .:? "lang"
2973+ <*> o' .:? "inline"
29702974 <*> o' .:? "stored"
29712975 <*> o' .:? "params"
29722976
2973−instance ToJSON FunctionScoreScriptParams where
2974− toJSON (FunctionScoreScriptParams x) = Object x
2977+instance ToJSON ScriptParams where
2978+ toJSON (ScriptParams x) = Object x
29752979
2976−instance FromJSON FunctionScoreScriptParams where
2977− parseJSON (Object o) = pure (FunctionScoreScriptParams o)
2978− parseJSON _ = fail "error parsing FunctionScoreScriptParams"
2980+instance FromJSON ScriptParams where
2981+ parseJSON (Object o) = pure (ScriptParams o)
2982+ parseJSON _ = fail "error parsing ScriptParams"
29792983
29802984instance ToJSON FieldValueFactor where
29812985 toJSON (FieldValueFactor field factor modifier missing) =
@@ -3551,17 +3555,18 @@ instance FromJSON SearchAliasRouting where
35513555 where parse t = SearchAliasRouting <$> parseNEJSON (String <$> T.splitOn "," t)
35523556
35533557instance ToJSON Search where
3554− toJSON (Search mquery sFilter sort searchAggs highlight sTrackSortScores sFrom sSize _ sFields sSource sSuggest) =
3555− omitNulls [ "query" .= query'
3556− , "sort" .= sort
3557− , "aggregations" .= searchAggs
3558− , "highlight" .= highlight
3559− , "from" .= sFrom
3560− , "size" .= sSize
3561− , "track_scores" .= sTrackSortScores
3562− , "fields" .= sFields
3563− , "_source" .= sSource
3564− , "suggest" .= sSuggest]
3558+ toJSON (Search mquery sFilter sort searchAggs highlight sTrackSortScores sFrom sSize _ sFields sScriptFields sSource sSuggest) =
3559+ omitNulls [ "query" .= query'
3560+ , "sort" .= sort
3561+ , "aggregations" .= searchAggs
3562+ , "highlight" .= highlight
3563+ , "from" .= sFrom
3564+ , "size" .= sSize
3565+ , "track_scores" .= sTrackSortScores
3566+ , "fields" .= sFields
3567+ , "script_fields" .= sScriptFields
3568+ , "_source" .= sSource
3569+ , "suggest" .= sSuggest]
35653570
35663571 where query' = case sFilter of
35673572 Nothing -> mquery
@@ -3931,7 +3936,8 @@ instance (FromJSON a) => FromJSON (Hit a) where
39313936 v .: "_type" <*>
39323937 v .: "_id" <*>
39333938 v .: "_score" <*>
3934− v .:? "_source" <*>
3939+ v .:? "_source" <*>
3940+ v .:? "fields" <*>
39353941 v .:? "highlight"
39363942 parseJSON _ = empty
39373943