@@ -14,6 +14,7 @@ import Data.List (nub)
14import Data.List.NonEmpty (NonEmpty (..))
14import Data.List.NonEmpty (NonEmpty (..))
15import qualified Data.List.NonEmpty as NE
15import qualified Data.List.NonEmpty as NE
16import qualified Data.Map.Strict as M
16import qualified Data.Map.Strict as M
17import Data.Text (Text)
18import Data.Text (Text)
18import qualified Data.Text as T
19import qualified Data.Text as T
19import Data.Time.Calendar (Day (..))
20import Data.Time.Calendar (Day (..))
@@ -174,15 +175,16 @@ insertOther = do
175searchTweet :: Search -> BH IO (Either String Tweet)
176searchTweet :: Search -> BH IO (Either String Tweet)
176searchTweet search = do
177searchTweet search = do
177− reply <- searchByIndex testIndex search
178+ result <- searchTweets search
178− let result = eitherDecode (responseBody reply) :: Either String (SearchResult Tweet)
179 let myTweet = fmap (hitSource . head . hits . searchHits) result
179 let myTweet = fmap (hitSource . head . hits . searchHits) result
180 return myTweet
180 return myTweet
182+searchTweets :: Search -> BH IO (Either String (SearchResult Tweet))
183+searchTweets search = eitherDecode . responseBody <$> searchByIndex testIndex search
182searchExpectNoResults :: Search -> BH IO ()
185searchExpectNoResults :: Search -> BH IO ()
183searchExpectNoResults search = do
186searchExpectNoResults search = do
184− reply <- searchByIndex testIndex search
187+ result <- searchTweets search
185− let result = eitherDecode (responseBody reply) :: Either String (SearchResult Tweet)
186 let emptyHits = fmap (hits . searchHits) result
188 let emptyHits = fmap (hits . searchHits) result
188 emptyHits `shouldBe` Right []
190 emptyHits `shouldBe` Right []
@@ -214,8 +216,7 @@ searchTermsAggHint hints = do
215searchTweetHighlight :: Search -> BH IO (Either String (Maybe HitHighlight))
217searchTweetHighlight :: Search -> BH IO (Either String (Maybe HitHighlight))
216searchTweetHighlight search = do
218searchTweetHighlight search = do
217− reply <- searchByIndex testIndex search
219+ result <- searchTweets search
218− let result = eitherDecode (responseBody reply) :: Either String (SearchResult Tweet)
219 let myHighlight = fmap (hitHighlight . head . hits . searchHits) result
220 let myHighlight = fmap (hitHighlight . head . hits . searchHits) result
220 return myHighlight
221 return myHighlight
@@ -435,8 +436,7 @@ main = hspec $ do
435 let search = Search Nothing
436 let search = Search Nothing
436 (Just IdentityFilter) (Just [sortSpec]) Nothing Nothing
437 (Just IdentityFilter) (Just [sortSpec]) Nothing Nothing
437 False (From 0) (Size 10) Nothing
438 False (From 0) (Size 10) Nothing
438− reply <- searchByIndex testIndex search
439+ result <- searchTweets search
439− let result = eitherDecode (responseBody reply) :: Either String (SearchResult Tweet)
440 let myTweet = fmap (hitSource . head . hits . searchHits) result
440 let myTweet = fmap (hitSource . head . hits . searchHits) result
442 myTweet `shouldBe` Right otherTweet
442 myTweet `shouldBe` Right otherTweet
@@ -628,6 +628,19 @@ main = hspec $ do
628 _ <- insertData
628 _ <- insertData
629 searchTermsAggHint [GlobalOrdinals, GlobalOrdinalsHash, GlobalOrdinalsLowCardinality, Map]
629 searchTermsAggHint [GlobalOrdinals, GlobalOrdinalsHash, GlobalOrdinalsLowCardinality, Map]
632+ it "can execute value_count aggregations" $ withTestEnv $ do
635+ let ags = mkAggregations "user_count" (ValueCountAgg (FieldValueCount (FieldName "user"))) <>
636+ mkAggregations "bogus_count" (ValueCountAgg (FieldValueCount (FieldName "bogus")))
637+ let search = mkAggregateSearch Nothing ags
638+ let countPair k n = (k, object ["value" .= Number n])
639+ res <- searchTweets search
641+ fmap aggregations res `shouldBe` Right (Just (M.fromList [ countPair "user_count" 2
642+ , countPair "bogus_count" 0
631 -- Interaction of date serialization and date histogram aggregation is broken.
644 -- Interaction of date serialization and date histogram aggregation is broken.
632 -- it "returns date histogram aggregation results" $ withTestEnv $ do
645 -- it "returns date histogram aggregation results" $ withTestEnv $ do
633 -- _ <- insertData
646 -- _ <- insertData