git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #175 from WraithM/master
e7eab66Michael Xavier
src/Database/V5/Bloodhound/Client.hs+16
@@ -55,6 +55,7 @@ module Database.V5.Bloodhound.Client
55 , searchByType
55 , searchByType
56 , scanSearch
56 , scanSearch
57 , getInitialScroll
57 , getInitialScroll
58+ , getInitialSortedScroll
58 , advanceScroll
59 , advanceScroll
59 , refreshIndex
60 , refreshIndex
60 , mkSearch
61 , mkSearch
@@ -955,6 +956,21 @@ getInitialScroll (IndexName indexName) (MappingName mappingName) search' = do
955 resp' <- bindM2 dispatchSearch url (return search)
956 resp' <- bindM2 dispatchSearch url (return search)
956 parseEsResponse resp'
957 parseEsResponse resp'
957
958
959+-- | For a given scearch, request a scroll for efficient streaming of
960+-- search results. Combine this with 'advanceScroll' to efficiently
961+-- stream through the full result set. Note that this search respects
962+-- sorting and may be less efficient than 'getInitialScroll'.
963+getInitialSortedScroll ::
964+ (FromJSON a, MonadThrow m, MonadBH m) => IndexName ->
965+ MappingName ->
966+ Search ->
967+ m (Either EsError (SearchResult a))
968+getInitialSortedScroll (IndexName indexName) (MappingName mappingName) search = do
969+ let url = addQuery params <$> joinPath [indexName, mappingName, "_search"]
970+ params = [("scroll", Just "1m")]
971+ resp' <- bindM2 dispatchSearch url (return search)
972+ parseEsResponse resp'
973+
958scroll' :: (FromJSON a, MonadBH m, MonadThrow m) => Maybe ScrollId ->
974scroll' :: (FromJSON a, MonadBH m, MonadThrow m) => Maybe ScrollId ->
959 m ([Hit a], Maybe ScrollId)
975 m ([Hit a], Maybe ScrollId)
960scroll' Nothing = return ([], Nothing)
976scroll' Nothing = return ([], Nothing)