diff --git a/src/Query/BoostingQuery.php b/src/Query/BoostingQuery.php
index c88f0eb89223c568a758b9af5e6bae137654f1d5..2e6fe64077216a6f420636c4b94ed743d14e694f 100644
--- a/src/Query/BoostingQuery.php
+++ b/src/Query/BoostingQuery.php
@@ -14,7 +14,9 @@ namespace ONGR\ElasticsearchDSL\Query;
 use ONGR\ElasticsearchDSL\BuilderInterface;
 
 /**
- * Elasticsearch boosting query class.
+ * Represents Elasticsearch "boosting" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html
  */
 class BoostingQuery implements BuilderInterface
 {
diff --git a/src/Query/CommonTermsQuery.php b/src/Query/CommonTermsQuery.php
index def85c06394df5e13bf0d9e744cbd09cada24e77..aa1dfc72a1c888190d37ba95a4d57ecefb71468e 100644
--- a/src/Query/CommonTermsQuery.php
+++ b/src/Query/CommonTermsQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Common terms query class.
+ * Represents Elasticsearch "common" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-common-terms-query.html
  */
 class CommonTermsQuery implements BuilderInterface
 {
diff --git a/src/Query/ConstantScoreQuery.php b/src/Query/ConstantScoreQuery.php
index bafba281c80623d22d070104c231824d0541468a..6ec11501732b21a938d47fef1cbfecd506c49ead 100644
--- a/src/Query/ConstantScoreQuery.php
+++ b/src/Query/ConstantScoreQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Constant score query class.
+ * Represents Elasticsearch "constant_score" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-constant-score-query.html
  */
 class ConstantScoreQuery implements BuilderInterface
 {
diff --git a/src/Query/DisMaxQuery.php b/src/Query/DisMaxQuery.php
index 49c68b9485a60a5e416d0fda4d1330a9fc9ceb37..aee0d331b7365645f70b2058d7811a94d0d232d4 100644
--- a/src/Query/DisMaxQuery.php
+++ b/src/Query/DisMaxQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch dis max query class.
+ * Represents Elasticsearch "dis_max" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html
  */
 class DisMaxQuery implements BuilderInterface
 {
@@ -65,7 +67,7 @@ class DisMaxQuery implements BuilderInterface
     {
         $query = [];
         foreach ($this->queries as $type) {
-            $query = array_merge($query, $type->toArray());
+            $query[] = $type->toArray();
         }
         $output = $this->processArray(['queries' => $query]);
 
diff --git a/src/Query/FuzzyQuery.php b/src/Query/FuzzyQuery.php
index 27f88460044ab6ad0a1b9cc28a65ac10bb01d413..c5feb0026e81180347d81378a42005f7782a9f4a 100644
--- a/src/Query/FuzzyQuery.php
+++ b/src/Query/FuzzyQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch fuzzy query class.
+ * Represents Elasticsearch "fuzzy" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html
  */
 class FuzzyQuery implements BuilderInterface
 {
diff --git a/src/Query/IdsQuery.php b/src/Query/IdsQuery.php
index fa55b73e14decfc7a427a807244af73b657e0416..02028cc8a090f301462d612b9e1eb0b94eeefb01 100644
--- a/src/Query/IdsQuery.php
+++ b/src/Query/IdsQuery.php
@@ -18,6 +18,8 @@ use ONGR\ElasticsearchDSL\ParametersTrait;
  * Represents Elasticsearch "ids" query.
  *
  * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html
+ *
+ * @todo Add "type" support
  */
 class IdsQuery implements BuilderInterface
 {
diff --git a/src/Query/MatchQuery.php b/src/Query/MatchQuery.php
index 05f799ad83c035d5076e761b4d94ea96b44fe150..0bc220e643bd73a6108c5ed25469eb66731468e7 100644
--- a/src/Query/MatchQuery.php
+++ b/src/Query/MatchQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch match query class.
+ * Represents Elasticsearch "match" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html
  */
 class MatchQuery implements BuilderInterface
 {
diff --git a/src/Query/MoreLikeThisQuery.php b/src/Query/MoreLikeThisQuery.php
index ce4e492cfd198c4add081e75462e84fd18786dbb..7be6953e9fc40a6eff2d8b722ad40a7cdedf7f65 100644
--- a/src/Query/MoreLikeThisQuery.php
+++ b/src/Query/MoreLikeThisQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch more_like_this query class.
+ * Represents Elasticsearch "more_like_this" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html
  */
 class MoreLikeThisQuery implements BuilderInterface
 {
@@ -24,15 +26,15 @@ class MoreLikeThisQuery implements BuilderInterface
     /**
      * @var string The text to find documents like it, required if ids or docs are not specified.
      */
-    private $likeText;
+    private $like;
 
     /**
-     * @param string $likeText
+     * @param string $like
      * @param array  $parameters
      */
-    public function __construct($likeText, array $parameters = [])
+    public function __construct($like, array $parameters = [])
     {
-        $this->likeText = $likeText;
+        $this->like = $like;
         $this->setParameters($parameters);
     }
 
@@ -52,7 +54,7 @@ class MoreLikeThisQuery implements BuilderInterface
         $query = [];
 
         if (($this->hasParameter('ids') === false) || ($this->hasParameter('docs') === false)) {
-            $query['like_text'] = $this->likeText;
+            $query['like'] = $this->like;
         }
 
         $output = $this->processArray($query);
diff --git a/src/Query/MultiMatchQuery.php b/src/Query/MultiMatchQuery.php
index 0fab953807abe93626fda838e9eef1f9e8481f06..35d0eec90b8f6f55371d0989e23b63ccdd2b8e7b 100644
--- a/src/Query/MultiMatchQuery.php
+++ b/src/Query/MultiMatchQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch multi_match query class.
+ * Represents Elasticsearch "multi_match" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html
  */
 class MultiMatchQuery implements BuilderInterface
 {
diff --git a/src/Query/QueryStringQuery.php b/src/Query/QueryStringQuery.php
index 5863bb9f600bc73cf52e4091d39c07df6a037d63..3a8cb524f078d5d18c4ea362b99445fc747d66a8 100644
--- a/src/Query/QueryStringQuery.php
+++ b/src/Query/QueryStringQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch query_string query class.
+ * Represents Elasticsearch "query_string" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
  */
 class QueryStringQuery implements BuilderInterface
 {
diff --git a/src/Query/RangeQuery.php b/src/Query/RangeQuery.php
index 75c446a9dea5f941db6040841778d9428c91d29f..486009d65e249c8f7b41cf617f5763d72f9cdeca 100644
--- a/src/Query/RangeQuery.php
+++ b/src/Query/RangeQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Range query class.
+ * Represents Elasticsearch "range" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
  */
 class RangeQuery implements BuilderInterface
 {
diff --git a/src/Query/SimpleQueryStringQuery.php b/src/Query/SimpleQueryStringQuery.php
index 960f04d083072bdaee9261e0f958c818575ce682..a110c5b8ba14cc044b879ed533fb3c5fc486e850 100644
--- a/src/Query/SimpleQueryStringQuery.php
+++ b/src/Query/SimpleQueryStringQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch simple_query_string query class.
+ * Represents Elasticsearch "simple_query_string" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html
  */
 class SimpleQueryStringQuery implements BuilderInterface
 {
diff --git a/src/Query/WildcardQuery.php b/src/Query/WildcardQuery.php
index a9982218982dd8779ddc016f5efea11a6e94101c..644776912d80ee9006a5e025236eb91faaddeb69 100644
--- a/src/Query/WildcardQuery.php
+++ b/src/Query/WildcardQuery.php
@@ -15,7 +15,9 @@ use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
- * Elasticsearch wildcard query class.
+ * Represents Elasticsearch "wildcard" query.
+ *
+ * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html
  */
 class WildcardQuery implements BuilderInterface
 {
diff --git a/tests/Query/BoolQueryTest.php b/tests/Query/BoolQueryTest.php
index af0cce85f42fb9ee75b9d7f200879a12e0f8e898..d08dfe181152f35de42da220a2bb7fd1ee850246 100644
--- a/tests/Query/BoolQueryTest.php
+++ b/tests/Query/BoolQueryTest.php
@@ -9,7 +9,7 @@
  * file that was distributed with this source code.
  */
 
-namespace ONGR\ElasticsearchDSL\Tests\Aggregation;
+namespace ONGR\ElasticsearchDSL\Tests\Query;
 
 use ONGR\ElasticsearchDSL\Query\BoolQuery;
 use ONGR\ElasticsearchDSL\Query\MatchAllQuery;
diff --git a/tests/Query/BoostingQueryTest.php b/tests/Query/BoostingQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..516f9b1ecb5a2d9fa412af9dc3409d184d35c30e
--- /dev/null
+++ b/tests/Query/BoostingQueryTest.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\BoostingQuery;
+
+class BoostingQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $mock = $this->getMock('ONGR\ElasticsearchDSL\BuilderInterface');
+        $mock
+            ->expects($this->any())
+            ->method('toArray')
+            ->willReturn(['term' => ['foo' => 'bar']]);
+
+        $query = new BoostingQuery($mock, $mock, 0.2);
+        $expected = [
+            'boosting' => [
+                'positive' => ['term' => ['foo' => 'bar']],
+                'negative' => ['term' => ['foo' => 'bar']],
+                'negative_boost' => 0.2,
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/CommonTermsQueryTest.php b/tests/Query/CommonTermsQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..749bb583068b484e0e6acf7fc9ba178bbc084366
--- /dev/null
+++ b/tests/Query/CommonTermsQueryTest.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\CommonTermsQuery;
+
+class CommonTermsQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new CommonTermsQuery('body', 'this is bonsai cool', ['cutoff_frequency' => 0.01]);
+        $expected = [
+            'common' => [
+                'body' => [
+                    'query' => 'this is bonsai cool',
+                    'cutoff_frequency' => 0.01,
+                ],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/ConstantScoreQueryTest.php b/tests/Query/ConstantScoreQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..4c4fdb68130ca89af2225b2feda154f7d548c736
--- /dev/null
+++ b/tests/Query/ConstantScoreQueryTest.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\ConstantScoreQuery;
+
+class ConstantScoreQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $mock = $this->getMock('ONGR\ElasticsearchDSL\BuilderInterface');
+        $mock
+            ->expects($this->any())
+            ->method('toArray')
+            ->willReturn(['term' => ['foo' => 'bar']]);
+
+        $query = new ConstantScoreQuery($mock, ['boost' => 1.2]);
+        $expected = [
+            'constant_score' => [
+                'filter' => [
+                    'term' => ['foo' => 'bar']
+                ],
+                'boost' => 1.2,
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/DisMaxQueryTest.php b/tests/Query/DisMaxQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8c5e442defe1101664f36d68e8968899c40dcf98
--- /dev/null
+++ b/tests/Query/DisMaxQueryTest.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\DisMaxQuery;
+
+class DisMaxQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $mock = $this->getMock('ONGR\ElasticsearchDSL\BuilderInterface');
+        $mock
+            ->expects($this->any())
+            ->method('toArray')
+            ->willReturn(['term' => ['foo' => 'bar']]);
+
+        $query = new DisMaxQuery(['boost' => 1.2]);
+        $query->addQuery($mock);
+        $query->addQuery($mock);
+        $expected = [
+            'dis_max' => [
+                'queries' => [
+                    ['term' => ['foo' => 'bar']],
+                    ['term' => ['foo' => 'bar']],
+                ],
+                'boost' => 1.2,
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/FuzzyQueryTest.php b/tests/Query/FuzzyQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..16edbf7a8891035993184f2c8d97ffc24c435fe5
--- /dev/null
+++ b/tests/Query/FuzzyQueryTest.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\FuzzyQuery;
+
+class FuzzyQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new FuzzyQuery('user', 'ki', ['boost' => 1.2]);
+        $expected = [
+            'fuzzy' => [
+                'user' => [
+                    'value' => 'ki',
+                    'boost' => 1.2,
+                ],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/IdsQueryTest.php b/tests/Query/IdsQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..f4ef6afc65437b0ff4442baa91f211bcbc719e8b
--- /dev/null
+++ b/tests/Query/IdsQueryTest.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\IdsQuery;
+
+class IdsQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new IdsQuery(['foo', 'bar']);
+        $expected = [
+            'ids' => [
+                'values' => ['foo', 'bar'],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/IndicesQueryTest.php b/tests/Query/IndicesQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ba384a259f09279af8a8318e80699759aa6f312c
--- /dev/null
+++ b/tests/Query/IndicesQueryTest.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\IndicesQuery;
+
+class IndicesQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Data provider for testToArray().
+     *
+     * @return array
+     */
+    public function getTestToArrayData()
+    {
+        $mock = $this->getMock('ONGR\ElasticsearchDSL\BuilderInterface');
+        $mock
+            ->expects($this->any())
+            ->method('toArray')
+            ->willReturn(['term' => ['foo' => 'bar']]);
+
+        return [
+            [
+                $mock,
+                $mock,
+                [
+                    'indices' => ['foo', 'bar'],
+                    'query' => ['term' => ['foo' => 'bar']],
+                    'no_match_query' => ['term' => ['foo' => 'bar']],
+                ]
+            ],
+            [
+                $mock,
+                'all',
+                [
+                    'indices' => ['foo', 'bar'],
+                    'query' => ['term' => ['foo' => 'bar']],
+                    'no_match_query' => 'all',
+                ]
+            ],
+            [
+                $mock,
+                null,
+                [
+                    'indices' => ['foo', 'bar'],
+                    'query' => ['term' => ['foo' => 'bar']],
+                ]
+            ],
+        ];
+    }
+
+    /**
+     * Tests toArray().
+     *
+     * @param $query
+     * @param $noMatchQuery
+     * @param $expected
+     *
+     * @dataProvider getTestToArrayData()
+     */
+    public function testToArray($query, $noMatchQuery, $expected)
+    {
+        $query = new IndicesQuery(['foo', 'bar'], $query, $noMatchQuery);
+        $this->assertEquals(['indices' => $expected], $query->toArray());
+    }
+}
diff --git a/tests/Query/MatchAllQueryTest.php b/tests/Query/MatchAllQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..86c7caece450825d3fec6ab88cb82d02712c820b
--- /dev/null
+++ b/tests/Query/MatchAllQueryTest.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\MatchAllQuery;
+
+class MatchAllQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new MatchAllQuery();
+        $this->assertEquals(['match_all' => []], $query->toArray());
+    }
+}
diff --git a/tests/Query/MatchQueryTest.php b/tests/Query/MatchQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..af9597ba1310d6a76807f78cd08b7d3d03c77b70
--- /dev/null
+++ b/tests/Query/MatchQueryTest.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\MatchQuery;
+
+class MatchQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new MatchQuery('message', 'this is a test');
+        $expected = [
+            'match' => [
+                'message' => [
+                    'query' => 'this is a test',
+                ],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/MoreLikeThisQueryTest.php b/tests/Query/MoreLikeThisQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..876c57eeda70e8e8886c9e03f2b1c32001256c76
--- /dev/null
+++ b/tests/Query/MoreLikeThisQueryTest.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\MoreLikeThisQuery;
+
+class MoreLikeThisQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new MoreLikeThisQuery('this is a test', ['fields' => ['title', 'description']]);
+        $expected = [
+            'more_like_this' => [
+                'fields' => ['title', 'description'],
+                'like' => 'this is a test',
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/MultiMatchQueryTest.php b/tests/Query/MultiMatchQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..428625f2c1c90da2e38f4d61758e41126234b298
--- /dev/null
+++ b/tests/Query/MultiMatchQueryTest.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\MultiMatchQuery;
+
+class MultiMatchQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new MultiMatchQuery(['message', 'title'], 'this is a test');
+        $expected = [
+            'multi_match' => [
+                'query' => 'this is a test',
+                'fields' => ['message', 'title'],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/PrefixQueryTest.php b/tests/Query/PrefixQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..18e9183d2e8c25692012d2d577842104dcfab7c9
--- /dev/null
+++ b/tests/Query/PrefixQueryTest.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\PrefixQuery;
+
+class PrefixQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new PrefixQuery('user', 'ki');
+        $expected = [
+            'prefix' => [
+                'user' => [
+                    'value' => 'ki',
+                ],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/QueryStringQueryTest.php b/tests/Query/QueryStringQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c211bd622e2e1e5107733cc44f2d498948c1c2a3
--- /dev/null
+++ b/tests/Query/QueryStringQueryTest.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\QueryStringQuery;
+
+class QueryStringQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new QueryStringQuery('this AND that OR thus');
+        $expected = [
+            'query_string' => [
+                'query' => 'this AND that OR thus',
+            ]
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/RangeQueryTest.php b/tests/Query/RangeQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..430815f6af2fbfdaa6dd95dbdd1fe73a97ea80a9
--- /dev/null
+++ b/tests/Query/RangeQueryTest.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\RangeQuery;
+
+class RangeQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new RangeQuery('age', ['gte' => 10, 'lte' => 20]);
+        $expected = [
+            'range' => [
+                'age' => [
+                    'gte' => 10,
+                    'lte' => 20,
+                ],
+            ]
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/RegexpQueryTest.php b/tests/Query/RegexpQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c7c583af91970c5fd4d5d45fd5cd8a68f7d5c461
--- /dev/null
+++ b/tests/Query/RegexpQueryTest.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\RegexpQuery;
+
+class RegexpQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new RegexpQuery('user', 's.*y');
+        $expected = [
+            'regexp' => [
+                'user' => [
+                    'value' => 's.*y',
+                ],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/SimpleQueryStringQueryTest.php b/tests/Query/SimpleQueryStringQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..a92aeb71024dc7655ddc9aca0e7c690c69887a6e
--- /dev/null
+++ b/tests/Query/SimpleQueryStringQueryTest.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\SimpleQueryStringQuery;
+
+class SimpleQueryStringQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new SimpleQueryStringQuery('"fried eggs" +(eggplant | potato) -frittata');
+        $expected = [
+            'simple_query_string' => [
+                'query' => '"fried eggs" +(eggplant | potato) -frittata',
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/TermQueryTest.php b/tests/Query/TermQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..688e3dadde7727e05bddca347a018662af924f16
--- /dev/null
+++ b/tests/Query/TermQueryTest.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\TermQuery;
+
+class TermQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new TermQuery('user', 'bob');
+        $expected = [
+            'term' => [
+                'user' => 'bob',
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/TermsQueryTest.php b/tests/Query/TermsQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..129184747de66c3f6a83e921a5844539a4ad2abf
--- /dev/null
+++ b/tests/Query/TermsQueryTest.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\TermsQuery;
+
+class TermsQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray().
+     */
+    public function testToArray()
+    {
+        $query = new TermsQuery('user', ['bob', 'elasticsearch']);
+        $expected = [
+            'terms' => [
+                'user' => ['bob', 'elasticsearch'],
+            ],
+        ];
+
+        $this->assertEquals($expected, $query->toArray());
+    }
+}
diff --git a/tests/Query/WildcardQueryTest.php b/tests/Query/WildcardQueryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e736df2646b3e126622295a10989a4fcd4ce99ab
--- /dev/null
+++ b/tests/Query/WildcardQueryTest.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Query;
+
+use ONGR\ElasticsearchDSL\Query\WildcardQuery;
+
+class WildcardQueryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Test for query toArray() method.
+     */
+    public function testToArray()
+    {
+        $query = new WildcardQuery('user', 'ki*y');
+        $expectedResult = [
+            'wildcard' => [
+                'user' => [
+                    'value' => 'ki*y',
+                ],
+            ],
+        ];
+
+        $this->assertEquals($expectedResult, $query->toArray());
+    }
+}