diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,7 @@
-# log-elasticsearch-0.9.0.1  (2017-06-19)
+# log-elasticsearch-0.9.1.0 (2017-08-10)
+* Add 'toEncoding' to 'ToJSON LogsMapping' instance
+
+# log-elasticsearch-0.9.0.1 (2017-06-19)
 * 'withElasticSearchLogger' no longer fails when the Elasticsearch server is down.
 
 # log-elasticsearch-0.9.0.0 (2017-05-04)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
 # log-elasticsearch [![Hackage version](https://img.shields.io/hackage/v/log-elasticsearch.svg?label=Hackage)](https://hackage.haskell.org/package/log-elasticsearch) [![Build Status](https://secure.travis-ci.org/scrive/log.svg?branch=master)](http://travis-ci.org/scrive/log)
 
-Elasticsearch back end for the `log` library.
+Elasticsearch back end for the `log` library suite.
diff --git a/log-elasticsearch.cabal b/log-elasticsearch.cabal
--- a/log-elasticsearch.cabal
+++ b/log-elasticsearch.cabal
@@ -1,8 +1,8 @@
 name:                log-elasticsearch
-version:             0.9.0.1
+version:             0.9.1.0
 synopsis:            Structured logging solution (Elasticsearch back end)
 
-description:         Elasticsearch back end for the 'log' library.
+description:         Elasticsearch back end for the 'log' library suite.
                      Depends on 'log-base'.
 
 homepage:            https://github.com/scrive/log
@@ -18,7 +18,7 @@
 build-type:          Simple
 cabal-version:       >=1.10
 extra-source-files:  CHANGELOG.md, README.md
-tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2
+tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
 
 Source-repository head
   Type:     git
@@ -36,7 +36,7 @@
                        Log.Backend.ElasticSearch.Internal
   build-depends:       base <5,
                        log-base >= 0.7,
-                       aeson >=0.11.0.0,
+                       aeson >=1.0.0.0,
                        aeson-pretty >=0.8.2,
                        bytestring,
                        base64-bytestring,
diff --git a/src/Log/Backend/ElasticSearch/V1.hs b/src/Log/Backend/ElasticSearch/V1.hs
--- a/src/Log/Backend/ElasticSearch/V1.hs
+++ b/src/Log/Backend/ElasticSearch/V1.hs
@@ -34,6 +34,7 @@
 import Prelude
 import System.IO
 import TextShow
+import qualified Data.Aeson.Encoding as Aeson
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Base64 as B64
 import qualified Data.ByteString.Lazy.Char8 as BSL
@@ -239,6 +240,34 @@
             "type" .= ("string"::T.Text)
           ]
         ]
+    ]
+
+  toEncoding LogsMapping = Aeson.pairs $ mconcat
+    [ Aeson.pair "properties" $ Aeson.pairs $ mconcat
+      [ Aeson.pair "insertion_order"  $ Aeson.pairs $ mconcat
+        [ "type" .= ("integer"::T.Text)
+        ]
+      , Aeson.pair "insertion_time" $ Aeson.pairs $ mconcat
+        [ "type"   .= ("date"::T.Text)
+        , "format" .= ("date_time"::T.Text)
+        ]
+      , Aeson.pair "time" $ Aeson.pairs $ mconcat
+        [ "type"   .= ("date"::T.Text)
+        , "format" .= ("date_time"::T.Text)
+        ]
+      , Aeson.pair "domain" $ Aeson.pairs $ mconcat
+        [ "type" .= ("string"::T.Text)
+        ]
+      , Aeson.pair "level" $ Aeson.pairs $ mconcat
+        [ "type" .= ("string"::T.Text)
+        ]
+      , Aeson.pair "component" $ Aeson.pairs $ mconcat
+        [ "type" .= ("string"::T.Text)
+        ]
+      , Aeson.pair "message" $ Aeson.pairs $ mconcat
+        [ "type" .= ("string"::T.Text)
+        ]
+      ]
     ]
 
 ----------------------------------------
