A child document can point to an id of a parent document that doesn't exist (yet). So a child document that just has a _parent field can be returned if you wrap a has_parent in a must_not clause.
If you try to perform this request: GET /[your-index]/psa/6_905 then I expect no parent document to be returned. On 2 October 2014 22:14, Tom Miller <[email protected]> wrote: > Martin, > > I'm running this on v1.3. > > The mapping for "document" only has one parent type: "psa", so the fact > both documents have a parent means they must be the same type. I'm using > using routing, so the parents and children are on the same shard. > > I'm not sure exactly what extra info I can give? My data is huge... > > I'll try fiddling a bit more to see if I can replicate it further. > > I guess the question is, how can it return a result which clearly contains > a "_parent" field, when I'm doing a "must_not" "has_parent" filter? That > should never be possible. > > On 2 October 2014 20:54, Martijn v Groningen < > [email protected]> wrote: > >> Can you share a reproduction of the mismatches you're experiencing? (in a >> gist or something like that, so that I can see on what data you're running >> these queries) >> >> The has_parent query in a must clause should return all child documents >> with a parent and a has_parent in must_not should return all child docs >> with no parent. >> >> Also on what ES version are you running this? >> >> On 2 October 2014 20:27, Tom Miller <[email protected]> wrote: >> >>> I have two documents, both (should) have a parent (different parents, >>> but the same type). >>> >>> However, I don't get the result I expect - especially trying to return >>> documents *without* a parent. >>> >>> For example: >>> >>> { >>> "fields":["_parent"], >>> "query": { >>> "filtered": { >>> "query": { >>> "query_string": { >>> "query": "kittens*" >>> } >>> }, >>> "filter": { >>> "bool": { >>> "must_not": [ >>> { >>> "has_parent": { >>> "parent_type": "psa", >>> "query": { >>> "match_all": {} >>> } >>> } >>> } >>> ] >>> } >>> } >>> } >>> } >>> } >>> >>> I run that, and I get this back: >>> >>> { >>> "took": 287, >>> "timed_out": false, >>> "_shards": { >>> "total": 1, >>> "successful": 1, >>> "failed": 0 >>> }, >>> "hits": { >>> "total": 1, >>> "max_score": 1, >>> "hits": [ >>> { >>> "_index": "egroup", >>> "_type": "document", >>> "_id": "6_9104", >>> "_score": 1, >>> "fields": { >>> "_parent": "6_905" >>> } >>> } >>> ] >>> } >>> } >>> >>> >>> Clearly it DOES have a parent because it shows in the results! >>> >>> If I change the initial query from "must_not" to "must", I get the other >>> document in the result: >>> >>> { >>> "took": 75, >>> "timed_out": false, >>> "_shards": { >>> "total": 1, >>> "successful": 1, >>> "failed": 0 >>> }, >>> "hits": { >>> "total": 1, >>> "max_score": 1, >>> "hits": [ >>> { >>> "_index": "egroup", >>> "_type": "document", >>> "_id": "6_9106", >>> "_score": 1, >>> "fields": { >>> "_parent": "6_847" >>> } >>> } >>> ] >>> } >>> } >>> >>> One query should return zero results, and the other should return 2. >>> However each are returning 1. >>> >>> Am I being thick, or is something amiss here - and how can I >>> troubleshoot it? >>> >>> >>> Tom. >>> >>> >>> -- >>> 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/c8beeddf-2cfb-4af7-8836-6779baf85933%40googlegroups.com >>> <https://groups.google.com/d/msgid/elasticsearch/c8beeddf-2cfb-4af7-8836-6779baf85933%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Met vriendelijke groet, >> >> Martijn van Groningen >> >> -- >> 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/N8eKOCz2vdM/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/CA%2BA76TwRGkJWWRLeV_Hv4kV1U3-zWN12pVuLsspmQRH3PSM7Kw%40mail.gmail.com >> <https://groups.google.com/d/msgid/elasticsearch/CA%2BA76TwRGkJWWRLeV_Hv4kV1U3-zWN12pVuLsspmQRH3PSM7Kw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > > Tom Miller > > Managing Director > > > ======================================================= > > > > eBiz > > Centurion House, London Road, Staines, TW18 4AX > > Tel: 08448 045046 > > email: tom.miller@ebiz. <[email protected]>uk <[email protected]> | > web: ebiz.uk | www.facebook.com/eBizUK | www.twitter.com/eBizUK > > > > > > Information contained in this communication may be confidential and/or > legally privileged. It is intended solely for the use of the addressee and > others authorized to receive it. If you are not the intended recipient any > disclosure, copying, distribution or action taken in reliance on its > contents is prohibited and may be unlawful. Neither eBiz | interactive > business solutions nor the author accepts legal liability for the contents > of this message. If you receive this communication in error please advise > us at [email protected] > > > > Whilst we run anti-virus software we are not liable for any loss/damage > sustained as a result of software viruses. The recipients are advised to > run their own anti-virus software > > -- > 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/CAM9sqB2yMh8_FTmYmaUPb7dkbYJ8w9B2iXAa1UVySn7h4AEe6Q%40mail.gmail.com > <https://groups.google.com/d/msgid/elasticsearch/CAM9sqB2yMh8_FTmYmaUPb7dkbYJ8w9B2iXAa1UVySn7h4AEe6Q%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Met vriendelijke groet, Martijn van Groningen -- 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/CA%2BA76TyAWtroBYH0NCgHE9n0fdWrd_wta_dR2b_cFiPCDi7dzw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
