diff --git a/Highlight/Highlight.php b/Highlight/Highlight.php
index cee68eed71c641bf66e0fdb1b859f4294127dcef..68601de46c1e77e80580c7fc9c19aec3c0bd97f3 100644
--- a/Highlight/Highlight.php
+++ b/Highlight/Highlight.php
@@ -11,13 +11,14 @@
 
 namespace ONGR\ElasticsearchBundle\DSL\Highlight;
 
+use ONGR\ElasticsearchBundle\DSL\BuilderInterface;
 use ONGR\ElasticsearchBundle\DSL\NamedBuilderBag;
 use ONGR\ElasticsearchBundle\DSL\NamedBuilderInterface;
 
 /**
  * Data holder for highlight api.
  */
-class Highlight extends NamedBuilderBag
+class Highlight extends NamedBuilderBag implements BuilderInterface
 {
     const TYPE_PLAIN = 'plain';
     const TYPE_POSTINGS = 'postings';
@@ -170,6 +171,14 @@ class Highlight extends NamedBuilderBag
         return $this;
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function getType()
+    {
+        return 'highlight';
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -182,6 +191,7 @@ class Highlight extends NamedBuilderBag
                 'fragment_size' => $this->fragmentSize,
                 'number_of_fragments' => $this->numberOfFragments,
                 'tags_schema' => $this->tagsSchema,
+                'fields' => $this->getFields(),
             ]
         );
 
@@ -197,11 +207,21 @@ class Highlight extends NamedBuilderBag
             }
         }
 
-        /** @var NamedBuilderInterface $field */
-        foreach ($this->all() as $field) {
-            $highlight['fields'][$field->getName()] = $field->toArray();
+        return $highlight;
+    }
+
+    /**
+     * Returns fields as array.
+     *
+     * @return array
+     */
+    private function getFields()
+    {
+        $out = [];
+        foreach ($this->all() as $builder) {
+            $out = array_merge($out, [$builder->getName() => $builder->toArray()]);
         }
 
-        return $highlight;
+        return $out;
     }
 }