git.iko.soy/typeable/bloodhound
on master help sign in
Added fields support to Search
commit72c1939523b237972afdaeea08475ae303b3bc15 authorJohn Galt <centromere@users.noreply.github.com> dateThu 23 Jul 2015, 00:52 (11 years ago) parent051edff
3 files changed+12−10
src/Database/Bloodhound/Client.hs+6−6 src/Database/Bloodhound/Types.hs+5−3 tests/tests.hs+1−1
src/Database/Bloodhound/Client.hs+6−6
@@ -533,9 +533,9 @@ searchByType (IndexName indexName)
533533--
534534-- >>> let query = TermQuery (Term "user" "bitemyapp") Nothing
535535-- >>> mkSearch (Just query) Nothing
536−-- 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}
536+-- 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, fields = Nothing}
537537mkSearch :: Maybe Query -> Maybe Filter -> Search
538−mkSearch query filter = Search query filter Nothing Nothing Nothing False (From 0) (Size 10)
538+mkSearch query filter = Search query filter Nothing Nothing Nothing False (From 0) (Size 10) Nothing
539539
540540-- | 'mkAggregateSearch' is a helper function that defaults everything in a 'Search' except for
541541-- the 'Query' and the 'Aggregation'.
@@ -545,7 +545,7 @@ mkSearch query filter = Search query filter Nothing Nothing Nothing False (From
545545-- TermsAgg (TermsAggregation {term = Left "user", termInclude = Nothing, termExclude = Nothing, termOrder = Nothing, termMinDocCount = Nothing, termSize = Nothing, termShardSize = Nothing, termCollectMode = Just BreadthFirst, termExecutionHint = Nothing, termAggs = Nothing})
546546-- >>> let myAggregation = mkAggregateSearch Nothing $ mkAggregations "users" terms
547547mkAggregateSearch :: Maybe Query -> Aggregations -> Search
548−mkAggregateSearch query mkSearchAggs = Search query Nothing Nothing (Just mkSearchAggs) Nothing False (From 0) (Size 0)
548+mkAggregateSearch query mkSearchAggs = Search query Nothing Nothing (Just mkSearchAggs) Nothing False (From 0) (Size 0) Nothing
549549
550550-- | 'mkHighlightSearch' is a helper function that defaults everything in a 'Search' except for
551551-- the 'Query' and the 'Aggregation'.
@@ -554,7 +554,7 @@ mkAggregateSearch query mkSearchAggs = Search query Nothing Nothing (Just mkSear
554554-- >>> let testHighlight = Highlights Nothing [FieldHighlight (FieldName "message") Nothing]
555555-- >>> let search = mkHighlightSearch (Just query) testHighlight
556556mkHighlightSearch :: Maybe Query -> Highlights -> Search
557−mkHighlightSearch query searchHighlights = Search query Nothing Nothing Nothing (Just searchHighlights) False (From 0) (Size 10)
557+mkHighlightSearch query searchHighlights = Search query Nothing Nothing Nothing (Just searchHighlights) False (From 0) (Size 10) Nothing
558558
559559-- | 'pageSearch' is a helper function that takes a search and assigns the from
560560-- and size fields for the search. The from parameter defines the offset
@@ -564,9 +564,9 @@ mkHighlightSearch query searchHighlights = Search query Nothing Nothing Nothing
564564-- >>> let query = QueryMatchQuery $ mkMatchQuery (FieldName "_all") (QueryString "haskell")
565565-- >>> let search = mkSearch (Just query) Nothing
566566-- >>> search
567−-- Search {queryBody = Just (QueryMatchQuery (MatchQuery {matchQueryField = FieldName "_all", matchQueryQueryString = QueryString "haskell", matchQueryOperator = Or, matchQueryZeroTerms = ZeroTermsNone, matchQueryCutoffFrequency = Nothing, matchQueryMatchType = Nothing, matchQueryAnalyzer = Nothing, matchQueryMaxExpansions = Nothing, matchQueryLenient = Nothing})), filterBody = Nothing, sortBody = Nothing, aggBody = Nothing, highlight = Nothing, trackSortScores = False, from = From 0, size = Size 10}
567+-- Search {queryBody = Just (QueryMatchQuery (MatchQuery {matchQueryField = FieldName "_all", matchQueryQueryString = QueryString "haskell", matchQueryOperator = Or, matchQueryZeroTerms = ZeroTermsNone, matchQueryCutoffFrequency = Nothing, matchQueryMatchType = Nothing, matchQueryAnalyzer = Nothing, matchQueryMaxExpansions = Nothing, matchQueryLenient = Nothing})), filterBody = Nothing, sortBody = Nothing, aggBody = Nothing, highlight = Nothing, trackSortScores = False, from = From 0, size = Size 10, fields = Nothing}
568568-- >>> pageSearch (From 10) (Size 100) search
569−-- Search {queryBody = Just (QueryMatchQuery (MatchQuery {matchQueryField = FieldName "_all", matchQueryQueryString = QueryString "haskell", matchQueryOperator = Or, matchQueryZeroTerms = ZeroTermsNone, matchQueryCutoffFrequency = Nothing, matchQueryMatchType = Nothing, matchQueryAnalyzer = Nothing, matchQueryMaxExpansions = Nothing, matchQueryLenient = Nothing})), filterBody = Nothing, sortBody = Nothing, aggBody = Nothing, highlight = Nothing, trackSortScores = False, from = From 10, size = Size 100}
569+-- Search {queryBody = Just (QueryMatchQuery (MatchQuery {matchQueryField = FieldName "_all", matchQueryQueryString = QueryString "haskell", matchQueryOperator = Or, matchQueryZeroTerms = ZeroTermsNone, matchQueryCutoffFrequency = Nothing, matchQueryMatchType = Nothing, matchQueryAnalyzer = Nothing, matchQueryMaxExpansions = Nothing, matchQueryLenient = Nothing})), filterBody = Nothing, sortBody = Nothing, aggBody = Nothing, highlight = Nothing, trackSortScores = False, from = From 10, size = Size 100, fields = Nothing}
570570pageSearch :: From -- ^ The result offset
571571 -> Size -- ^ The number of results to return
572572 -> Search -- ^ The current seach
src/Database/Bloodhound/Types.hs+5−3
@@ -707,7 +707,8 @@ data Search = Search { queryBody :: Maybe Query
707707 -- default False
708708 , trackSortScores :: TrackSortScores
709709 , from :: From
710− , size :: Size } deriving (Eq, Show)
710+ , size :: Size
711+ , fields :: Maybe [FieldName] } deriving (Eq, Show)
711712
712713data Highlights = Highlights { globalsettings :: Maybe HighlightSettings
713714 , highlightFields :: [FieldHighlight]
@@ -2042,7 +2043,7 @@ instance (FromJSON a) => FromJSON (EsResult a) where
20422043
20432044
20442045instance ToJSON Search where
2045− toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize) =
2046+ toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize sFields) =
20462047 omitNulls [ "query" .= query
20472048 , "filter" .= sFilter
20482049 , "sort" .= sort
@@ -2050,7 +2051,8 @@ instance ToJSON Search where
20502051 , "highlight" .= highlight
20512052 , "from" .= sFrom
20522053 , "size" .= sSize
2053− , "track_scores" .= sTrackSortScores]
2054+ , "track_scores" .= sTrackSortScores
2055+ , "fields" .= sFields]
20542056
20552057
20562058instance ToJSON FieldHighlight where
tests/tests.hs+1−1
@@ -425,7 +425,7 @@ main = hspec $ do
425425 let sortSpec = DefaultSortSpec $ mkSort (FieldName "age") Ascending
426426 let search = Search Nothing
427427 (Just IdentityFilter) (Just [sortSpec]) Nothing Nothing
428− False (From 0) (Size 10)
428+ False (From 0) (Size 10) Nothing
429429 reply <- searchByIndex testIndex search
430430 let result = eitherDecode (responseBody reply) :: Either String (SearchResult Tweet)
431431 let myTweet = fmap (hitSource . head . hits . searchHits) result