diff --git a/bloodhound.cabal b/bloodhound.cabal
--- a/bloodhound.cabal
+++ b/bloodhound.cabal
@@ -1,5 +1,5 @@
 name:                bloodhound
-version:             0.13.0.0
+version:             0.14.0.0
 synopsis:            ElasticSearch client library for Haskell
 description:         ElasticSearch made awesome for Haskell hackers
 homepage:            https://github.com/bitemyapp/bloodhound
@@ -44,7 +44,7 @@
   build-depends:       base             >= 4.3     && <5,
                        bytestring       >= 0.10.0  && <0.11,
                        containers       >= 0.5.0.0 && <0.6,
-                       aeson            >= 0.11.1  && <1.2,
+                       aeson            >= 0.11.1  && <1.3,
                        http-client      >= 0.4.30  && <0.6,
                        network-uri      >= 2.6     && <2.7,
                        semigroups       >= 0.15    && <0.19,
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,30 @@
+0.14.0.0
+===================
+
+- @bitemyapp
+  - Aeson 1.2
+
+- @shmish111
+  - #177 Added stats aggregation
+
+- @justinwhite
+  - #176 Fixed typo
+
+- @WraithM
+  - #175 Sorted version of getInitialScroll for V5 client
+
+0.13.0.0
+===================
+
+- @michaelxavier
+  - #174 doctests are bad
+  - #171 Added Semigroup instances
+  - #165 Aeson 1.1
+
+- @bermanjosh
+  - #168 Sub-aggregation support
+  - #167 Limit QuickCheck to 500 checks
+
 0.12.1.0
 ===================
 * @michaelxavier
diff --git a/src/Database/V1/Bloodhound/Client.hs b/src/Database/V1/Bloodhound/Client.hs
--- a/src/Database/V1/Bloodhound/Client.hs
+++ b/src/Database/V1/Bloodhound/Client.hs
@@ -794,7 +794,7 @@
   (MappingName mappingName) = bindM2 dispatchSearch url . return
   where url = joinPath [indexName, mappingName, "_search"]
 
--- | For a given scearch, request a scroll for efficient streaming of
+-- | For a given search, request a scroll for efficient streaming of
 -- search results. Note that the search is put into 'SearchTypeScan'
 -- mode and thus results will not be sorted. Combine this with
 -- 'advanceScroll' to efficiently stream through the full result set
diff --git a/src/Database/V5/Bloodhound/Client.hs b/src/Database/V5/Bloodhound/Client.hs
--- a/src/Database/V5/Bloodhound/Client.hs
+++ b/src/Database/V5/Bloodhound/Client.hs
@@ -55,6 +55,7 @@
        , searchByType
        , scanSearch
        , getInitialScroll
+       , getInitialSortedScroll
        , advanceScroll
        , refreshIndex
        , mkSearch
@@ -938,7 +939,7 @@
   (MappingName mappingName) = bindM2 dispatchSearch url . return
   where url = joinPath [indexName, mappingName, "_search"]
 
--- | For a given scearch, request a scroll for efficient streaming of
+-- | For a given search, request a scroll for efficient streaming of
 -- search results. Note that the search is put into 'SearchTypeScan'
 -- mode and thus results will not be sorted. Combine this with
 -- 'advanceScroll' to efficiently stream through the full result set
@@ -952,6 +953,21 @@
         params = [("scroll", Just "1m")]
         sorting = Just [DefaultSortSpec $ mkSort (FieldName "_doc") Descending]
         search = search' { sortBody = sorting }
+    resp' <- bindM2 dispatchSearch url (return search)
+    parseEsResponse resp'
+
+-- | For a given search, request a scroll for efficient streaming of
+-- search results. Combine this with 'advanceScroll' to efficiently
+-- stream through the full result set. Note that this search respects
+-- sorting and may be less efficient than 'getInitialScroll'.
+getInitialSortedScroll ::
+  (FromJSON a, MonadThrow m, MonadBH m) => IndexName ->
+                                           MappingName ->
+                                           Search ->
+                                           m (Either EsError (SearchResult a))
+getInitialSortedScroll (IndexName indexName) (MappingName mappingName) search = do
+    let url = addQuery params <$> joinPath [indexName, mappingName, "_search"]
+        params = [("scroll", Just "1m")]
     resp' <- bindM2 dispatchSearch url (return search)
     parseEsResponse resp'
 
diff --git a/src/Database/V5/Bloodhound/Types.hs b/src/Database/V5/Bloodhound/Types.hs
--- a/src/Database/V5/Bloodhound/Types.hs
+++ b/src/Database/V5/Bloodhound/Types.hs
@@ -47,6 +47,8 @@
        , mkDateHistogram
        , mkCardinalityAggregation
        , mkDocVersion
+       , mkStatsAggregation
+       , mkExtendedStatsAggregation
        , docVersionNumber
        , toMissing
        , toTerms
@@ -341,6 +343,7 @@
        , DateMathModifier(..)
        , DateMathUnit(..)
        , TopHitsAggregation(..)
+       , StatisticsAggregation(..)
 
        , Highlights(..)
        , FieldHighlight(..)
@@ -1715,6 +1718,7 @@
                  | DateRangeAgg DateRangeAggregation
                  | MissingAgg MissingAggregation
                  | TopHitsAgg TopHitsAggregation
+                 | StatsAgg StatisticsAggregation
   deriving (Eq, Read, Show, Generic, Typeable)
 
 data TopHitsAggregation = TopHitsAggregation
@@ -1792,6 +1796,14 @@
 data FilterAggregation = FilterAggregation { faFilter :: Filter
                                            , faAggs   :: Maybe Aggregations} deriving (Eq, Read, Show, Generic, Typeable)
 
+data StatisticsAggregation = StatisticsAggregation { statsType :: StatsType
+                                                   , statsField :: FieldName } deriving (Eq, Read, Show, Generic, Typeable)
+
+data StatsType
+  = Basic
+  | Extended
+  deriving (Eq, Read, Show, Generic, Typeable)
+
 mkTermsAggregation :: Text -> TermsAggregation
 mkTermsAggregation t = TermsAggregation (Left t) Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
 
@@ -1804,6 +1816,12 @@
 mkCardinalityAggregation :: FieldName -> CardinalityAggregation
 mkCardinalityAggregation t = CardinalityAggregation t Nothing
 
+mkStatsAggregation :: FieldName -> StatisticsAggregation
+mkStatsAggregation = StatisticsAggregation Basic
+
+mkExtendedStatsAggregation :: FieldName -> StatisticsAggregation
+mkExtendedStatsAggregation = StatisticsAggregation Extended
+
 instance ToJSON Version where
   toJSON Version {..} = object ["number" .= number
                                ,"build_hash" .= build_hash
@@ -1927,6 +1945,12 @@
                                        , "sort" .= msort
                                        ]
               ]
+
+  toJSON (StatsAgg (StatisticsAggregation typ field)) =
+    object [stType .= omitNulls [ "field" .= field ]]
+    where
+      stType | typ == Basic = "stats"
+             | otherwise = "extended_stats"
 
 instance ToJSON DateRangeAggregation where
   toJSON DateRangeAggregation {..} =
diff --git a/tests/V5/tests.hs b/tests/V5/tests.hs
--- a/tests/V5/tests.hs
+++ b/tests/V5/tests.hs
@@ -1144,6 +1144,21 @@
       liftIO $
         fmap aggregations res `shouldBe` Right (Just (M.fromList [ docCountPair "users" 1]))
 
+    it "returns stats aggregation results" $ withTestEnv $ do
+      _ <- insertData
+      let stats = StatsAgg $ mkStatsAggregation $ FieldName "age"
+      let search = mkAggregateSearch Nothing $ mkAggregations "users" stats
+      let search' = search { Database.V5.Bloodhound.from = From 0, size = Size 0 }
+      searchExpectAggs search'
+      let statsAggRes k n = (k, object [ "max" .= Number n
+                                       , "avg" .= Number n
+                                       , "count" .= Number 1
+                                       , "min" .= Number n
+                                       , "sum" .= Number n])
+      res <- searchTweets search'
+      liftIO $
+        fmap aggregations res `shouldBe` Right (Just (M.fromList [ statsAggRes "users" 10000]))
+
     it "can give collection hint parameters to term aggregations" $ when' (atleast es13) $ withTestEnv $ do
       _ <- insertData
       let terms = TermsAgg $ (mkTermsAggregation "user") { termCollectMode = Just BreadthFirst }
