any thoughts anyone ?

On Wednesday, June 11, 2014 11:15:18 PM UTC-7, Srinivasan Ramaswamy wrote:
>
> I would like to exclude some documents belonging to certain category from 
> the results only for certain search queries. I have a ES client layer where 
> i am thinking of implementing this logic as a "not" filter depending on the 
> search query. Let me give an example.
>
> sample index
>
> designId: 100
> tags: ["dog", "cute"]
> caption : cute dog in the garden
> products : [ { productId: "200", category: 1}, {productId: "201", 
> category: 2} ]
>
> designId: 101
> tags: ["brown", "dog"]
> caption :  little brown dog
> products : [ {productId: "202", category: 3} ]
>
> designId: 102
> tags: ["black", "dog"]
> caption :  little black dog
> products : [ { productId: "202", category: 4}, {productId: "203", 
> category: 5} ]
>
> products is a nested field inside each design.
>
> I would like to write a query to get all matches for "dog", (not for other 
> keywords) but filter out few categories from the result. As ES returns the 
> whole nested document even if only one nested document matches the query, 
> my expected result is
>
> designId: 100
> tags: ["dog", "cute"]
> caption : cute dog in the garden
> products : [ { productId: "200", category: 1}, {productId: "201", 
> category: 2} ]
>
> designId: 102
> tags: ["black", "dog"]
> caption :  little black dog
> products : [ { productId: "202", category: 4}, {productId: "203", 
> category: 5} ]
> Here is the query i tried but it doesn't work. Can anyone help me point 
> out the mistake ?
>
> GET /_search/
> {
>    "query": {
>       "filtered": {
>          "filter": {
>                   "and": [
>                      {
>                          "not": {
>                            "term": {
>                               "category": 1
>                            }
>                          }
>                      },
>                      {
>                          "not": {
>                            "term": {
>                               "category": 3
>                            }
>                          }
>                      }
>                   ]
>                
>          },
>          "query": {
>             "multi_match": {
>                "query": "dog",
>                "fields": [
>                   "tags",
>                   "caption"
>                ],
>                "minimum_should_match": "50%"
>             }
>          }
>       }
>    }
> }
>

-- 
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/45fbf85d-4d29-4222-a72a-bf0a04d9a26d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to