Hi All,

I think I've figured it out:

            "filter": {
                    "and": {
                    "or": [    
                       { 
                           "nested": {
                                "path": "variants",
                                "filter": {
                                    "range": { "price": { "gt":10,"lte":20}}
                                }
                            }
                
                       }
                    ]
            }

It will be a lot of code as nested within the last node, but I think it 
will work.

Dev

On Friday, January 9, 2015 at 3:22:09 PM UTC, Dev Day wrote:
>
> Hi All,
>
> Please see a working example of a document.
> The document has variants as a nested document within each root document.
> The data has 3 records as can be seen below.
> I would like to do the following:
>
> 1) For the filter aggregation for colour, I would like to filter by two 
> ranges, in a OR condition - gt 10 lte 20 and gt 30 and lte 40 
> 2) For the same filter aggregation for colour, I would like to filter by 
> the above AND size = small.
>
> Can anyone help?
> I cannot seem to use AND / OR or BOOL logic with nested / non-nested 
> combinations?
>
> DELETE /testindex/
> PUT /testindex/
> {
>     "mappings": {
>         "products":{
>             "properties": {
>                 "variants":{
>                     "type":"nested"
>                 }
>             }
>         }
>     }
> }
>
> POST /_bulk
> {"create":{"_index":"testindex","_type":"products","_id":"1"}}
> {"code":"1", "variants": [{"sku":"123", "price": 15}], "colour":"blue", 
> "size":"small"}
> {"create":{"_index":"testindex","_type":"products","_id":"2"}}
> {"code":"2", "variants": [{"sku":"456", "price": 30}], "colour":"red", 
> "size":"small"}
> {"create":{"_index":"testindex","_type":"products","_id":"3"}}
> {"code":"3", "variants": [{"sku":"789", "price": 35}], "colour":"red", 
> "size":"large"}
>
>
> POST /testindex/products/_search
> {
>     "aggs": {
>         "colour":{
>             "filter":{
>                "nested": {
>                     "path": "variants",
>                     "filter": {
>                         "range": { "price": { "gt":10,"lte":20}}
>                     }
>                 }
>             },
>             "aggs":{
>                 "colour":{
>                     "terms":{ "field": "colour" }
>                 }
>             }
>         },
>         "price":{
>              "nested": {
>                 "path":"variants"
>              },
>              "aggs":{
>                  "price":{
>                     "terms":{ "field": "price" }
>                     }
>                 }
>              }
>     },
>     "post_filter" : {
>         "nested": {
>             "path":"variants",
>             "filter": {
>                 "range": { "price": { "gte":20}}
>             }
>         }
>     }
> }
>

-- 
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+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/0771a418-83a7-4e7a-9ccb-9faf76c60ade%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to