Hi Ivan Thanks for your reply. Yeah, I do understand that currently elasticsearch returns the whole nested doc. Can you help me how can i get the negative query with multiple categories working ?
Thanks Srini On Fri, Jun 13, 2014 at 10:58 AM, Ivan Brusic <[email protected]> wrote: > Currently not possible. Elasticsearch will return all the nested documents > as long as one of the nested documents satisfies the query. > > https://github.com/elasticsearch/elasticsearch/issues/3022 > > The issue is my personal #1 feature requested. Frustrating considering > there has been a working implementation since version 0.90.5. 1.0, 1.1, 1.2 > and still nothing. > > -- > Ivan > > > > > On Thu, Jun 12, 2014 at 2:17 PM, Srinivasan Ramaswamy <[email protected]> > wrote: > >> 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. >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "elasticsearch" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/elasticsearch/Fqt70gBtypQ/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elasticsearch/CALY%3DcQAfwARsZ7uGKkBf%2BH10jhrdw4dr5nxvHEK_FDUwQv%2BpQw%40mail.gmail.com > <https://groups.google.com/d/msgid/elasticsearch/CALY%3DcQAfwARsZ7uGKkBf%2BH10jhrdw4dr5nxvHEK_FDUwQv%2BpQw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAL1MvVyOvd_YDi92z_fH9-OE6VJTcOP-Q4E-BvKj94FSkvEJOw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
