Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

Post Filter

More info about post filter is in the official elasticsearch docs

The post filters are filters that are applied to the search hits at the very end of a search request, after aggregations have already been calculated.

To add post filters use addPostFilter method in Search object. addPostFilter works like query and filter adders - you can add as many filters as you want and bool filter will be formed if endpoint has multiple filters or bool type parameter was provided.

Simple example

{
  "post_filter": { 
    "term": { "color": "red" }
  }
}

And now the query via DSL:

$termFilter = new TermFilter('color', 'red');

$search = new Search();
$search->addPostFilter($termFilter);
$queryArray = $search->toArray();

Bool example

{
    "post_filter": {
        "bool": {
            "must": [
                {
                    "term": {
                        "color": "red"
                    }
                },
                {
                    "term": {
                        "brand": "ana"
                    }
                }
            ]
        }
    }
}

And now the query via DSL:

$termFilter1 = new TermFilter('color', 'red');
$termFilter2 = new TermFilter('brand', 'ana');

$search = new Search();
$search->addPostFilter($termFilter1);
$search->addPostFilter($termFilter2);
$queryArray = $search->toArray();