# Using filters in ElasticSearch - PHP

**URL:** <https://discuss.elastic.co/t/using-filters-in-elasticsearch-php/1961>\
**Category:** Elasticsearch\
**Created:** [June 4, 2015, 6:35pm UTC](https://discuss.elastic.co/t/using-filters-in-elasticsearch-php/1961 "2015-06-04T18:35:09Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rgonzalez](https://avatars.discourse-cdn.com/v4/letter/r/bc79bd/32.png) [@rgonzalez](https://discuss.elastic.co/u/rgonzalez)\
**Post date:** [June 4, 2015, 6:35pm UTC](https://discuss.elastic.co/t/using-filters-in-elasticsearch-php/1961/1 "2015-06-04T18:35:09Z")

</div>

I have set up an ELK server. I want to create some graphs with some data from ElasticSearch. I was trying something like:

```
    $filters = array();
    $query = array();
    $filter = array();

    $filters['not']['term']['tags'] = '_grokparsefailure';
    $filters['and']['range']['@timestamp']['from'] = "2015-05-01";
    $filters['and']['range']['@timestamp']['to'] = "2015-05-10";

    $filters['and']['range']['icon_seq']['gt'] = -1;

    $params2 = array(
            'index'=> $this->view->elk_index,
            'type' => $this->view->elk_type,
            'size' => 1000000,
            'body' => array(
                'query' => array(
                    'filtered' => array(
                        //'query' => $query,
                        'filter' => $filters
                     )
                 ),
                'filter' => $filter 
            )
    );

$results2 = $client->search($params2);

```

But as you imagine, it's not working correctly. The date range is not working. What am I doing wrong? Thanks

---

<div class="post-metadata">

**Author:** ![nik9000](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nik9000/32/44947_2.png) [@nik9000](https://discuss.elastic.co/u/nik9000)\
**Post date:** [June 5, 2015, 5:55pm UTC](https://discuss.elastic.co/t/using-filters-in-elasticsearch-php/1961/2 "2015-06-05T17:55:29Z")

</div>

I think you'll have more luck getting help if you write what you are trying to in json instead of php.

I suspect the issue is around $filters - it can't contain both `not` and `and` as keys. Maybe:

```php
$filters['bool']['should'][] = array( 'not' => array( 'term' => array( 'tags' => '_grokparsefailure' )));
$filters['bool']['should'][] = array ('range' => array ('@timestamp' => array (
  'from' => "2015-05-01", 'to' => "2015-05-10" )));
$filters['bool']['should'][] = array( 'range' => array( 'icon_seq' => array( 'gt' => -1 )));

```

---

<div class="post-metadata">

**Author:** ![rgonzalez](https://avatars.discourse-cdn.com/v4/letter/r/bc79bd/32.png) [@rgonzalez](https://discuss.elastic.co/u/rgonzalez)\
**Post date:** [June 5, 2015, 6:40pm UTC](https://discuss.elastic.co/t/using-filters-in-elasticsearch-php/1961/3 "2015-06-05T18:40:57Z")

</div>

Hi. Thanks! for some reason it's not filtering correctly.

It's filtering by timestamp but I'm still getting some that the tags is "\_grokparsefailure" and that dont have the field icon\_seq. Thanks!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 12:09am UTC](https://discuss.elastic.co/t/using-filters-in-elasticsearch-php/1961/4 "2017-07-06T00:09:21Z")

</div>


