Skip to content

Commit 9e6d598

Browse files
committed
Add setPostFilter method to Elastica\Query
1 parent 8024d1f commit 9e6d598

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

changes.txt

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
CHANGES
22

3+
2014-07-02
4+
- Add setPostFilter method to Elastica\Query (http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_filtering_queries_and_aggregations.html#_post_filter)
5+
36
2014-06-30
47
- Add Reverse Nested aggregation (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html).
58

lib/Elastica/Query.php

+15
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,10 @@ public function toArray()
348348
unset($this->_params['facets']);
349349
}
350350

351+
if (isset($this->_params['post_filter']) && 0 === count($this->_params['post_filter'])) {
352+
unset($this->_params['post_filter']);
353+
}
354+
351355
return $this->_params;
352356
}
353357

@@ -399,6 +403,17 @@ public function setSource(array $fields)
399403
{
400404
return $this->setParam('_source', $fields);
401405
}
406+
407+
/**
408+
* Sets post_filter argument for the query. The filter is applied after the query has executed
409+
* @param array $post
410+
* @return \Elastica\Query Current object
411+
* @link http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_filtering_queries_and_aggregations.html#_post_filter
412+
*/
413+
public function setPostFilter(array $post)
414+
{
415+
return $this->setParam("post_filter", $post);
416+
}
402417
}
403418

404419

test/lib/Elastica/Test/QueryTest.php

+18
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Elastica\Query\Text;
1010
use Elastica\Query;
1111
use Elastica\Facet\Terms;
12+
use Elastica\Filter\Term as FilterTerm;
1213
use Elastica\Test\Base as BaseTest;
1314

1415
class QueryTest extends BaseTest
@@ -191,4 +192,21 @@ public function testSetFacets()
191192

192193
$this->assertArrayNotHasKey('facets', $query->toArray());
193194
}
195+
196+
public function testSetPostQuery()
197+
{
198+
$query = new Query();
199+
200+
$post_filter = new FilterTerm(['color' => 'green']);
201+
$query->setPostFilter($post_filter->toArray());
202+
203+
$data = $query->toArray();
204+
205+
$this->assertArrayHasKey('post_filter', $data);
206+
$this->assertEquals(array('term' => array('color' => 'green')), $data['post_filter']);
207+
208+
$query->setPostFilter(array());
209+
210+
$this->assertArrayNotHasKey('post_filter', $query->toArray());
211+
}
194212
}

0 commit comments

Comments
 (0)