I have no idea. It's hard to understand what you exactly did without a full reproduction.

A SENSE script posted as a GIST would help a lot I think.

--

David Pilato | Technical Advocate | elasticsearch.com

david.pilato@elasticsearch.com

@dadoonet | @elasticsearchfr | @scrutmydocs

Le 7 octobre 2014 à 10:49:54, Rémi Nonnon (remi.nonnon@gmail.com) a écrit:

Hi,

Thanks for your immediate help!

(sorry i deleted this post because I didn't find how to edit it. I posted a new one)

I did it with nested documents but the array seems to be faster on other aggregations like extended stats or percentiles then I wondered if my filters are well written.

Thanks again.

Le mardi 7 octobre 2014 10:38:43 UTC+2, David Pilato a écrit :

One of the solution I can think is by using nested documents for your array.

In that case, each element of the array will be seen as the document.

Hope this helps

--

David Pilato | Technical Advocate | elasticsearch.com

david....@elasticsearch.com

@dadoonet | @elasticsearchfr | @scrutmydocs

Le 7 octobre 2014 à 10:36:28, Rémi Nonnon (remi....@gmail.com) a écrit:

Hi all,

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

Example of 1 document :

```
{
"_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

```
{
"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 :

```
{
"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 elasticsearch+unsubscribe@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/ea6b7b2e-2874-4387-b314-86a425e88b77%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--

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 elasticsearch+unsubscribe@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/etPan.5433b483.614fd4a1.7bd4%40MacBook-Air-de-David.local.

For more options, visit https://groups.google.com/d/optout.