Hi all,

I have some troubles when I try to use Range Filter aggregation on an array.

Example of 1 document :
```json
{
   "_index": "test",
   "_type": "values",
   "_id": "1",
   "_version": 1,
   "found": true,
   "_source": {
      "array": [927,425,455,120]
    }
}
```

For all my "values" document, I'd like to count for "array" field how many 
numbers are less than 200 and how many are greater than 500.

I tried this aggregation :

GET /test/values/_search
```json
{
  "aggs" : {
    "less" : {
      "filter":{"range":{"array":{ "lt" : 200}}}
    },
    "greater" : {
       "filter":{"range":{"array":{ "gt" : 500}}}
    }
  }
}
```

But the 1st filter count the number of documents which have an array 
containing a value <200 and the 2nd how many have a value >500.
What I'd like is to count how many values are <200 and how many are >500 
(not how many document).

If I make a sum / min / max aggregation, it will be on each value in arrays 
but not with a filter.
Do you have an idea how to do that thing?


I did it with 2 script filters, it works, but the computing time is too bad 
:

```json
{ 
  "aggs" : {
    "less" : {
      "sum":{
        "script":" def sum = 0; doc['array'].values.each(){if(it < 200) 
sum++}; return sum;"}
    },
    "greater" : {
       "sum":{
         "script":"def sum = 0; doc['array'].values.each(){if(it > 500) 
sum++}; return sum;"}
    }
}
```

Any Idea?
Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/d988da81-167f-48d2-b4c8-8e94956bc333%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to