jenkins-bot has submitted this change and it was merged.
Change subject: Updating Elastica to 1.3.0.0 release to match 1.3.x requirement
of ES
......................................................................
Updating Elastica to 1.3.0.0 release to match 1.3.x requirement of ES
Change-Id: Id9f85924ee9d792a8679554888e8cbf5913aa39c
---
M Elastica.php
M Elastica/changes.txt
M Elastica/composer.json
A Elastica/lib/Elastica/Aggregation/ReverseNested.php
M Elastica/lib/Elastica/Param.php
M Elastica/lib/Elastica/Query.php
M Elastica/lib/Elastica/Query/ConstantScore.php
M Elastica/lib/Elastica/Query/Filtered.php
M Elastica/lib/Elastica/Query/FunctionScore.php
M Elastica/lib/Elastica/Transport/Guzzle.php
M Elastica/lib/Elastica/Transport/Http.php
M Elastica/lib/Elastica/Transport/Memcache.php
M Elastica/lib/Elastica/Transport/Thrift.php
M Elastica/test/bin/run_elasticsearch.sh
A Elastica/test/lib/Elastica/Test/Aggregation/ReverseNestedTest.php
M Elastica/test/lib/Elastica/Test/Base.php
M Elastica/test/lib/Elastica/Test/Query/ConstantScoreTest.php
M Elastica/test/lib/Elastica/Test/Query/FilteredTest.php
M Elastica/test/lib/Elastica/Test/Query/FunctionScoreTest.php
A Elastica/test/lib/Elastica/Test/Query/PostFilterTest.php
M Elastica/test/lib/Elastica/Test/Transport/HttpTest.php
21 files changed, 478 insertions(+), 44 deletions(-)
Approvals:
Manybubbles: Looks good to me, approved
jenkins-bot: Verified
diff --git a/Elastica.php b/Elastica.php
index 958e879..c08752e 100644
--- a/Elastica.php
+++ b/Elastica.php
@@ -25,7 +25,7 @@
'author' => array( 'Nik Everett', 'Chad Horohoe' ),
'descriptionmsg' => 'elastica-desc',
'url' => 'https://www.mediawiki.org/wiki/Extension:Elastica',
- 'version' => '1.0.1.2'
+ 'version' => '1.3.0.0'
);
/**
@@ -63,6 +63,7 @@
$wgAutoloadClasses['Elastica\Type'] = $elasticaDir . 'Type.php';
$wgAutoloadClasses['Elastica\Util'] = $elasticaDir . 'Util.php';
$wgAutoloadClasses['Elastica\Aggregation\Cardinality'] = $elasticaDir .
'Aggregation/Cardinality.php';
+$wgAutoloadClasses['Elastica\Aggregation\ReverseNested'] = $elasticaDir .
'Aggregation/ReverseNested.php';
$wgAutoloadClasses['Elastica\Bulk\Action'] = $elasticaDir . 'Bulk/Action.php';
$wgAutoloadClasses['Elastica\Bulk\Response'] = $elasticaDir .
'Bulk/Response.php';
$wgAutoloadClasses['Elastica\Bulk\ResponseSet'] = $elasticaDir .
'Bulk/ResponseSet.php';
diff --git a/Elastica/changes.txt b/Elastica/changes.txt
index b9d99a9..525a633 100755
--- a/Elastica/changes.txt
+++ b/Elastica/changes.txt
@@ -1,5 +1,31 @@
CHANGES
+2014-07-26
+- Release v1.3.0.0
+- Prepare Elastica Release v1.3.0.0
+
+2014-07-25
+- Update to elasticsearch version 1.3.0
http://www.elasticsearch.org/downloads/1-3-0/
+
+2014-07-14
+ - Add setQuery() method to Elastica\Query\ConstantScore #653
+
+2014-07-12
+ - Be able to configure ES host/port via ENV var in test env #652
+
+2014-07-07
+ - Fix FunstionScore Query random_score without seed bug. #647
+
+2014-07-02
+- Add setPostFilter method to Elastica\Query
(http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_filtering_queries_and_aggregations.html#_post_filter)
#645
+
+2014-06-30
+- Add Reverse Nested aggregation
(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html).
#642
+
+2014-06-14
+- Release v1.2.1.0
+- Removed the requirement to set arguments filter and/or query in Filtered,
according to the documentation:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html
#616
+
2014-06-13
- Stop ClientTest->testDeleteIdsIdxStringTypeString from failing 1/3 of the
time #634
- Stop ScanAndScrollTest->testQuerySizeOverride from failing frequently for no
reason #635
diff --git a/Elastica/composer.json b/Elastica/composer.json
index 62e5d45..70c2832 100644
--- a/Elastica/composer.json
+++ b/Elastica/composer.json
@@ -31,5 +31,10 @@
"Elastica": "lib/",
"Elastica\\Test": "test/lib/"
}
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
}
}
diff --git a/Elastica/lib/Elastica/Aggregation/ReverseNested.php
b/Elastica/lib/Elastica/Aggregation/ReverseNested.php
new file mode 100644
index 0000000..d4056f1
--- /dev/null
+++ b/Elastica/lib/Elastica/Aggregation/ReverseNested.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Elastica\Aggregation;
+
+/**
+ * Reversed Nested Aggregation
+ *
+ * @package Elastica\Aggregation
+ * @link
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html
+ */
+class ReverseNested extends AbstractAggregation
+{
+ /**
+ * @param string $name The name of this aggregation
+ * @param string $path Optional path to the nested object for this
aggregation. Defaults to the root of the main document.
+ */
+ public function __construct($name, $path = null)
+ {
+ parent::__construct($name);
+
+ if ($path !== null) {
+ $this->setPath($path);
+ }
+ }
+
+ /**
+ * Set the nested path for this aggregation
+ *
+ * @param string $path
+ * @return ReverseNested
+ */
+ public function setPath($path)
+ {
+ return $this->setParam("path", $path);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function toArray()
+ {
+ $array = parent::toArray();
+
+ // ensure we have an object for the reverse_nested key.
+ // if we don't have a path, then this would otherwise get encoded as
an empty array, which is invalid.
+ $array['reverse_nested'] = (object)$array['reverse_nested'];
+
+ return $array;
+ }
+}
diff --git a/Elastica/lib/Elastica/Param.php b/Elastica/lib/Elastica/Param.php
index d84f18e..38a45d1 100644
--- a/Elastica/lib/Elastica/Param.php
+++ b/Elastica/lib/Elastica/Param.php
@@ -132,7 +132,7 @@
*/
public function getParam($key)
{
- if (!isset($this->_params[$key])) {
+ if (!$this->hasParam($key)) {
throw new InvalidException('Param ' . $key . ' does not exist');
}
diff --git a/Elastica/lib/Elastica/Query.php b/Elastica/lib/Elastica/Query.php
index b729654..2f37f2e 100755
--- a/Elastica/lib/Elastica/Query.php
+++ b/Elastica/lib/Elastica/Query.php
@@ -348,6 +348,10 @@
unset($this->_params['facets']);
}
+ if (isset($this->_params['post_filter']) && 0 ===
count($this->_params['post_filter'])) {
+ unset($this->_params['post_filter']);
+ }
+
return $this->_params;
}
@@ -399,6 +403,17 @@
{
return $this->setParam('_source', $fields);
}
+
+ /**
+ * Sets post_filter argument for the query. The filter is applied after
the query has executed
+ * @param array $post
+ * @return \Elastica\Query Current object
+ * @link
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_filtering_queries_and_aggregations.html#_post_filter
+ */
+ public function setPostFilter(array $post)
+ {
+ return $this->setParam("post_filter", $post);
+ }
}
diff --git a/Elastica/lib/Elastica/Query/ConstantScore.php
b/Elastica/lib/Elastica/Query/ConstantScore.php
index 69cff5a..1685460 100644
--- a/Elastica/lib/Elastica/Query/ConstantScore.php
+++ b/Elastica/lib/Elastica/Query/ConstantScore.php
@@ -41,6 +41,21 @@
}
/**
+ * Set query
+ *
+ * @param array|\Elastica\Query\AbstractQuery $query
+ * @return \Elastica\Query\ConstantScore Query object
+ */
+ public function setQuery($query)
+ {
+ if ($query instanceof AbstractQuery) {
+ $query = $query->toArray();
+ }
+
+ return $this->setParam('query', $query);
+ }
+
+ /**
* Set boost
*
* @param float $boost
diff --git a/Elastica/lib/Elastica/Query/Filtered.php
b/Elastica/lib/Elastica/Query/Filtered.php
index 74a4c80..c28d4cd 100644
--- a/Elastica/lib/Elastica/Query/Filtered.php
+++ b/Elastica/lib/Elastica/Query/Filtered.php
@@ -1,7 +1,9 @@
<?php
namespace Elastica\Query;
+
use Elastica\Filter\AbstractFilter;
+use Elastica\Exception\InvalidException;
/**
* Filtered query. Needs a query and a filter
@@ -14,27 +16,12 @@
class Filtered extends AbstractQuery
{
/**
- * Query
- *
- * @var \Elastica\Query\AbstractQuery Query object
- */
- protected $_query = null;
-
- /**
- * Filter
- *
- * @var \Elastica\Filter\AbstractFilter Filter object
- */
- protected $_filter = null;
-
- /**
* Constructs a filtered query
*
- * @param \Elastica\Query\AbstractQuery $query Query object
- * @param \Elastica\Filter\AbstractFilter $filter Filter object
+ * @param \Elastica\Query\AbstractQuery $query OPTIONAL Query object
+ * @param \Elastica\Filter\AbstractFilter $filter OPTIONAL Filter object
*/
- public function __construct(AbstractQuery $query, AbstractFilter $filter)
- {
+ public function __construct(AbstractQuery $query = null, AbstractFilter
$filter = null) {
$this->setQuery($query);
$this->setFilter($filter);
}
@@ -45,11 +32,9 @@
* @param \Elastica\Query\AbstractQuery $query Query object
* @return \Elastica\Query\Filtered Current object
*/
- public function setQuery(AbstractQuery $query)
+ public function setQuery(AbstractQuery $query = null)
{
- $this->_query = $query;
-
- return $this;
+ return $this->setParam('query', $query);
}
/**
@@ -58,11 +43,9 @@
* @param \Elastica\Filter\AbstractFilter $filter Filter object
* @return \Elastica\Query\Filtered Current object
*/
- public function setFilter(AbstractFilter $filter)
+ public function setFilter(AbstractFilter $filter = null)
{
- $this->_filter = $filter;
-
- return $this;
+ return $this->setParam('filter', $filter);
}
/**
@@ -72,7 +55,7 @@
*/
public function getFilter()
{
- return $this->_filter;
+ return $this->getParam('filter');
}
/**
@@ -82,7 +65,7 @@
*/
public function getQuery()
{
- return $this->_query;
+ return $this->getParam('query');
}
/**
@@ -93,9 +76,20 @@
*/
public function toArray()
{
- return array('filtered' => array(
- 'query' => $this->_query->toArray(),
- 'filter' => $this->_filter->toArray()
- ));
+ $filtered = array();
+
+ if ($this->hasParam('query') && $this->getParam('query') instanceof
AbstractQuery) {
+ $filtered['query'] = $this->getParam('query')->toArray();
+ }
+
+ if ($this->hasParam('filter') && $this->getParam('filter') instanceof
AbstractFilter) {
+ $filtered['filter'] = $this->getParam('filter')->toArray();
+ }
+
+ if (empty($filtered)) {
+ throw new InvalidException('A query and/or filter is required');
+ }
+
+ return array('filtered' => $filtered);
}
}
diff --git a/Elastica/lib/Elastica/Query/FunctionScore.php
b/Elastica/lib/Elastica/Query/FunctionScore.php
index 26f14f1..8230c86 100755
--- a/Elastica/lib/Elastica/Query/FunctionScore.php
+++ b/Elastica/lib/Elastica/Query/FunctionScore.php
@@ -171,9 +171,9 @@
*/
public function setRandomScore($seed = NULL)
{
- $seedParam = array();
+ $seedParam = new \stdClass();
if (!is_null($seed)) {
- $seedParam['seed'] = $seed;
+ $seedParam->seed = $seed;
}
return $this->setParam('random_score', $seedParam);
}
diff --git a/Elastica/lib/Elastica/Transport/Guzzle.php
b/Elastica/lib/Elastica/Transport/Guzzle.php
index 38e08ba..96ad897 100644
--- a/Elastica/lib/Elastica/Transport/Guzzle.php
+++ b/Elastica/lib/Elastica/Transport/Guzzle.php
@@ -70,7 +70,7 @@
$req->setHeaders($connection->hasConfig('headers') ?: array());
$data = $request->getData();
- if (isset($data) && !empty($data)) {
+ if (!empty($data) || '0' === $data) {
if ($req->getMethod() == Request::GET) {
$req->setMethod(Request::POST);
diff --git a/Elastica/lib/Elastica/Transport/Http.php
b/Elastica/lib/Elastica/Transport/Http.php
index 6dbba1a..5606dbb 100644
--- a/Elastica/lib/Elastica/Transport/Http.php
+++ b/Elastica/lib/Elastica/Transport/Http.php
@@ -93,7 +93,7 @@
$data = $request->getData();
$httpMethod = $request->getMethod();
- if (isset($data) && !empty($data)) {
+ if (!empty($data) || '0' === $data) {
if ($this->hasParam('postWithRequestBody') &&
$this->getParam('postWithRequestBody') == true) {
$httpMethod = Request::POST;
}
diff --git a/Elastica/lib/Elastica/Transport/Memcache.php
b/Elastica/lib/Elastica/Transport/Memcache.php
index b8a3bb0..cf047b5 100644
--- a/Elastica/lib/Elastica/Transport/Memcache.php
+++ b/Elastica/lib/Elastica/Transport/Memcache.php
@@ -39,7 +39,7 @@
$content = '';
- if (!empty($data)) {
+ if (!empty($data) || '0' === $data) {
if (is_array($data)) {
$content = JSON::stringify($data);
} else {
diff --git a/Elastica/lib/Elastica/Transport/Thrift.php
b/Elastica/lib/Elastica/Transport/Thrift.php
index 0b6225c..f58c51a 100644
--- a/Elastica/lib/Elastica/Transport/Thrift.php
+++ b/Elastica/lib/Elastica/Transport/Thrift.php
@@ -135,7 +135,7 @@
}
$data = $request->getData();
- if (!empty($data)) {
+ if (!empty($data) || '0' === $data) {
if (is_array($data)) {
$content = JSON::stringify($data);
} else {
diff --git a/Elastica/test/bin/run_elasticsearch.sh
b/Elastica/test/bin/run_elasticsearch.sh
index 101fa26..ddbbef3 100755
--- a/Elastica/test/bin/run_elasticsearch.sh
+++ b/Elastica/test/bin/run_elasticsearch.sh
@@ -14,6 +14,7 @@
export JAVA_OPTS="-server"
+# start 3 elasticsearch instances
for i in 0 1 2
do
echo "Setup node #$i"
diff --git a/Elastica/test/lib/Elastica/Test/Aggregation/ReverseNestedTest.php
b/Elastica/test/lib/Elastica/Test/Aggregation/ReverseNestedTest.php
new file mode 100644
index 0000000..215dac6
--- /dev/null
+++ b/Elastica/test/lib/Elastica/Test/Aggregation/ReverseNestedTest.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace Elastica\Test\Aggregation;
+
+use Elastica\Aggregation\Terms;
+use Elastica\Aggregation\Nested;
+use Elastica\Aggregation\ReverseNested;
+use Elastica\Document;
+use Elastica\Query;
+use Elastica\Type\Mapping;
+
+class ReverseNestedTest extends BaseAggregationTest
+{
+ protected function setUp()
+ {
+ parent::setUp();
+ $this->_index = $this->_createIndex("nested");
+ $mapping = new Mapping();
+ $mapping->setProperties(array(
+ "comments" => array(
+ "type" => "nested",
+ "properties" => array(
+ "name" => array("type" => "string"),
+ "body" => array("type" => "string")
+ )
+ )
+ ));
+ $type = $this->_index->getType("test");
+ $type->setMapping($mapping);
+ $docs = array(
+ new Document("1", array(
+ "comments" => array(
+ array(
+ "name" => "bob",
+ "body" => "this is bobs comment",
+ ),
+ array(
+ "name" => "john",
+ "body" => "this is johns comment",
+ ),
+ ),
+ "tags" => array("foo", "bar"),
+ )),
+ new Document("2", array(
+ "comments" => array(
+ array(
+ "name" => "bob",
+ "body" => "this is another comment from bob",
+ ),
+ array(
+ "name" => "susan",
+ "body" => "this is susans comment",
+ ),
+ ),
+ "tags" => array("foo", "baz"),
+ ))
+ );
+ $type->addDocuments($docs);
+ $this->_index->refresh();
+ }
+
+ public function testPathNotSetIfNull()
+ {
+ $agg = new ReverseNested('nested');
+ $this->assertFalse($agg->hasParam('path'));
+ }
+
+ public function testPathSetIfNotNull()
+ {
+ $agg = new ReverseNested('nested', 'some_field');
+ $this->assertEquals('some_field', $agg->getParam('path'));
+ }
+
+ public function testReverseNestedAggregation()
+ {
+ $agg = new Nested("comments", "comments");
+ $names = new Terms("name");
+ $names->setField("comments.name");
+
+ $tags = new Terms("tags");
+ $tags->setField("tags");
+
+ $reverseNested = new ReverseNested("main");
+ $reverseNested->addAggregation($tags);
+
+ $names->addAggregation($reverseNested);
+
+ $agg->addAggregation($names);
+
+ $query = new Query();
+ $query->addAggregation($agg);
+ $results = $this->_index->search($query)->getAggregation("comments");
+
+ $this->assertArrayHasKey('name', $results);
+ $nameResults = $results['name'];
+
+ $this->assertCount(3, $nameResults['buckets']);
+
+ // bob
+ $this->assertEquals('bob', $nameResults['buckets'][0]['key']);
+ $tags = array(
+ array('key' => 'foo', 'doc_count' => 2),
+ array('key' => 'bar', 'doc_count' => 1),
+ array('key' => 'baz', 'doc_count' => 1),
+ );
+ $this->assertEquals($tags,
$nameResults['buckets'][0]['main']['tags']['buckets']);
+
+ // john
+ $this->assertEquals('john', $nameResults['buckets'][1]['key']);
+ $tags = array(
+ array('key' => 'bar', 'doc_count' => 1),
+ array('key' => 'foo', 'doc_count' => 1),
+ );
+ $this->assertEquals($tags,
$nameResults['buckets'][1]['main']['tags']['buckets']);
+
+ // susan
+ $this->assertEquals('susan', $nameResults['buckets'][2]['key']);
+ $tags = array(
+ array('key' => 'baz', 'doc_count' => 1),
+ array('key' => 'foo', 'doc_count' => 1),
+ );
+ $this->assertEquals($tags,
$nameResults['buckets'][2]['main']['tags']['buckets']);
+ }
+}
diff --git a/Elastica/test/lib/Elastica/Test/Base.php
b/Elastica/test/lib/Elastica/Test/Base.php
index 530718a..55cd887 100644
--- a/Elastica/test/lib/Elastica/Test/Base.php
+++ b/Elastica/test/lib/Elastica/Test/Base.php
@@ -8,7 +8,10 @@
{
protected function _getClient()
{
- return new Client();
+ return new Client(array(
+ 'host' => getenv('ES_HOST') ?: 'localhost',
+ 'port' => getenv('ES_PORT') ?: 9200,
+ ));
}
/**
diff --git a/Elastica/test/lib/Elastica/Test/Query/ConstantScoreTest.php
b/Elastica/test/lib/Elastica/Test/Query/ConstantScoreTest.php
index 9189c30..27143eb 100644
--- a/Elastica/test/lib/Elastica/Test/Query/ConstantScoreTest.php
+++ b/Elastica/test/lib/Elastica/Test/Query/ConstantScoreTest.php
@@ -5,7 +5,11 @@
use Elastica\Filter\Term;
use Elastica\Filter\Ids;
use Elastica\Query\ConstantScore;
+use Elastica\Query\MatchAll;
use Elastica\Test\Base as BaseTest;
+use Elastica\Index;
+use Elastica\Document;
+use Elastica\Type;
class ConstantScoreTest extends BaseTest
{
@@ -101,6 +105,49 @@
}
+ public function testQuery()
+ {
+
+ $client = $this->_getClient();
+ $index = new Index($client, 'test');
+ $index->create(array(), true);
+
+ $type = new Type($index, 'constant_score');
+
+ $doc = new Document(1, array('id' => 1, 'email' => '[email protected]',
'username' => 'hans'));
+ $type->addDocument($doc);
+ $doc = new Document(2, array('id' => 2, 'email' => '[email protected]',
'username' => 'emil'));
+ $type->addDocument($doc);
+ $doc = new Document(3, array('id' => 3, 'email' => '[email protected]',
'username' => 'ruth'));
+ $type->addDocument($doc);
+
+ // Refresh index
+ $index->refresh();
+
+ $boost = 1.3;
+ $query_match = new MatchAll();
+
+ $query = new ConstantScore();
+ $query->setQuery($query_match);
+ $query->setBoost($boost);
+
+ $expectedArray = array(
+ 'constant_score' => array(
+ 'query' => $query_match->toArray(),
+ 'boost' => $boost
+ )
+ );
+
+ $this->assertEquals($expectedArray, $query->toArray());
+ $resultSet = $type->search($query);
+
+ $results = $resultSet->getResults();
+
+ $this->assertEquals($resultSet->count(), 3);
+ $this->assertEquals($results[1]->getScore(), 1);
+
+ }
+
public function testConstructEmpty()
{
$query = new ConstantScore();
diff --git a/Elastica/test/lib/Elastica/Test/Query/FilteredTest.php
b/Elastica/test/lib/Elastica/Test/Query/FilteredTest.php
index 636b737..c6bd909 100644
--- a/Elastica/test/lib/Elastica/Test/Query/FilteredTest.php
+++ b/Elastica/test/lib/Elastica/Test/Query/FilteredTest.php
@@ -12,9 +12,7 @@
{
public function testFilteredSearch()
{
- $client = $this->_getClient();
- $index = $client->getIndex('test');
- $index->create(array(), true);
+ $index = $this->_createIndex();
$type = $index->getType('helloworld');
$doc = new Document(1, array('id' => 1, 'email' => '[email protected]',
'username' => 'hanswurst', 'test' => array('2', '3', '5')));
@@ -62,4 +60,53 @@
$this->assertEquals($query1->getFilter(), $filter1);
$this->assertEquals($query2->getFilter(), $filter2);
}
+
+ /**
+ * @expectedException \Elastica\Exception\InvalidException
+ */
+ public function testFilteredWithoutArgumentsShouldRaiseException()
+ {
+ $query = new Filtered();
+ $query->toArray();
+ }
+
+ public function testFilteredSearchNoQuery()
+ {
+ $index = $this->_createIndex();
+ $type = $index->getType('helloworld');
+
+ $doc = new Document(1, array('id' => 1, 'email' => '[email protected]',
'username' => 'hanswurst', 'test' => array('2', '3', '5')));
+ $type->addDocument($doc);
+ $doc = new Document(2, array('id' => 2, 'email' => '[email protected]',
'username' => 'peter', 'test' => array('2', '3', '5')));
+ $type->addDocument($doc);
+
+ $filter = new Term();
+ $filter->setTerm('username', 'peter');
+
+ $query = new Filtered(null, $filter);
+ $index->refresh();
+
+ $resultSet = $type->search($query);
+ $this->assertEquals(1, $resultSet->count());
+ }
+
+ public function testFilteredSearchNoFilter()
+ {
+ $index = $this->_createIndex();
+ $type = $index->getType('helloworld');
+
+ $doc = new Document(1, array('id' => 1, 'email' => '[email protected]',
'username' => 'hanswurst', 'test' => array('2', '3', '5')));
+ $type->addDocument($doc);
+ $doc = new Document(2, array('id' => 2, 'email' => '[email protected]',
'username' => 'peter', 'test' => array('2', '3', '5')));
+ $type->addDocument($doc);
+
+ $queryString = new QueryString('hans*');
+
+ $query = new Filtered($queryString);
+ $index->refresh();
+
+ $resultSet = $type->search($query);
+ $this->assertEquals(1, $resultSet->count());
+ }
+
}
diff --git a/Elastica/test/lib/Elastica/Test/Query/FunctionScoreTest.php
b/Elastica/test/lib/Elastica/Test/Query/FunctionScoreTest.php
index cf6bb2e..47d9dd2 100755
--- a/Elastica/test/lib/Elastica/Test/Query/FunctionScoreTest.php
+++ b/Elastica/test/lib/Elastica/Test/Query/FunctionScoreTest.php
@@ -170,6 +170,16 @@
$this->assertEquals("Miller's Field", $result0['name']);
}
+ public function testRandomScoreWithoutSeed()
+ {
+ $query = new FunctionScore();
+ $query->setRandomScore();
+
+ $response = $this->type->search($query);
+
+ $this->assertEquals(2, $response->count());
+ }
+
public function testScriptScore()
{
$scriptString = "_score * doc['price'].value";
diff --git a/Elastica/test/lib/Elastica/Test/Query/PostFilterTest.php
b/Elastica/test/lib/Elastica/Test/Query/PostFilterTest.php
new file mode 100644
index 0000000..16b7e07
--- /dev/null
+++ b/Elastica/test/lib/Elastica/Test/Query/PostFilterTest.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Elastica\Test\Query;
+
+use Elastica\Document;
+use Elastica\Filter\Term;
+use Elastica\Index;
+use Elastica\Query\Match;
+use Elastica\Query;
+use Elastica\Test\Base as BaseTest;
+
+class PostFilterTest extends BaseTest
+{
+ /**
+ * @var Index
+ */
+ protected $_index;
+
+ protected function setUp()
+ {
+ parent::setUp();
+ $this->_index = $this->_createIndex("query");
+ $docs = array(
+ new Document("1", array("color" => "green", "make" => "ford")),
+ new Document("2", array("color" => "blue", "make" => "volvo")),
+ new Document("3", array("color" => "red", "make" => "ford")),
+ new Document("4", array("color" => "green", "make" => "renault")),
+ );
+ $this->_index->getType("test")->addDocuments($docs);
+ $this->_index->refresh();
+
+ }
+
+ protected function tearDown()
+ {
+ parent::tearDown();
+ if ($this->_index instanceof Index) {
+ $this->_index->delete();
+ }
+ }
+
+ public function testToArray()
+ {
+ $query = new Query();
+
+ $post_filter = new Term(array('color' => 'green'));
+ $query->setPostFilter($post_filter->toArray());
+
+ $data = $query->toArray();
+
+ $this->assertArrayHasKey('post_filter', $data);
+ $this->assertEquals(array('term' => array('color' => 'green')),
$data['post_filter']);
+
+ $query->setPostFilter(array());
+
+ $this->assertArrayNotHasKey('post_filter', $query->toArray());
+ }
+
+ public function testQuery()
+ {
+ $query = new Query();
+
+ $match = new Match();
+ $match->setField('make', 'ford');
+
+ $query->setQuery($match);
+
+ $filter = new Term();
+ $filter->setTerm('color', 'green');
+
+ $query->setPostFilter($filter->toArray());
+
+ $results = $this->_index->search($query);
+
+ $this->assertEquals(1, $results->getTotalHits());
+
+ }
+
+ protected function _createIndex($name = 'test', $delete = true, $shards =
1)
+ {
+ return parent::_createIndex('test_postfilter_' . $name, $delete,
$shards);
+ }
+}
diff --git a/Elastica/test/lib/Elastica/Test/Transport/HttpTest.php
b/Elastica/test/lib/Elastica/Test/Transport/HttpTest.php
index 2094682..88c93be 100644
--- a/Elastica/test/lib/Elastica/Test/Transport/HttpTest.php
+++ b/Elastica/test/lib/Elastica/Test/Transport/HttpTest.php
@@ -211,4 +211,17 @@
$this->assertEquals(1, $resultSet->getTotalHits());
}
+ public function testPostWith0Body()
+ {
+ $client = new Client();
+
+ $index = $client->getIndex('elastica_0_body');
+ $index->create(array(), true);
+ $index->refresh();
+
+ $tokens = $index->analyze('0');
+
+ $this->assertNotEmpty($tokens);
+ }
+
}
--
To view, visit https://gerrit.wikimedia.org/r/159802
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Id9f85924ee9d792a8679554888e8cbf5913aa39c
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Elastica
Gerrit-Branch: master
Gerrit-Owner: Chad <[email protected]>
Gerrit-Reviewer: Chad <[email protected]>
Gerrit-Reviewer: Manybubbles <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits