I am experiencing an issue while trying to retrieve a grandchild record by 
its parent ID. (child-grandchild relationship)
The amount of hits in result is always zero.
Also the same request is working fine for parent-child relationship.

My records are getting organized kinda like this:

Account --(one to one)--> User --(one to one)--> Address

My execution environment is:
 - Fedora 21 CE
 - openjdk 1.8.0_25
 - ES 1.4.2

Here is a script that is showing the problem

# index creation
curl -XPUT "localhost:9200/the_index/" -d "{
    \"mappings\": {
        \"account\" : {},
        \"user\" : { 
            \"_parent\" : { 
                \"type\" : \"account\" 
            }  
        },
        \"address\" : { 
            \"_parent\" : { 
                \"type\" : \"user\" 
            }  
        }
    }
}";

# mrsmith account creation
curl -XPUT "localhost:9200/the_index/account/mrsmith" -d "{
    \"foo\" : \"foo\"
}";

# john user creation
curl -XPUT "localhost:9200/the_index/user/john?parent=mrsmith" -d "{
    \"bar\" : \"bar\"
}";

# john user creation
curl -XPUT "localhost:9200/the_index/address/smithshouse?parent=john" -d "{
    \"baz\" : \"baz\"
}";

# Here I am trying to retrieve a record. Getting zero hits.
curl -XGET "localhost:9200/the_index/address/_search?pretty" -d "{
    \"query\" : { \"bool\" : { \"must\" : { \"term\" : { \"_parent\" : 
\"john\" } } } }
}";

# Another approach with has_parent query type. Still getting zero hits.
curl -XGET "localhost:9200/the_index/address/_search?pretty" -d "{
   \"query\" : { 
       \"has_parent\" : {
           \"parent_type\" : \"user\",
           \"query\" : { 
               \"term\" : { 
                   \"_id\" : \"john\" 
               } 
           } 
       } 
    }
}";

# OK, lets try a routed search. Nope
curl -XGET "localhost:9200/the_index/address/_search?routing=john&pretty" 
-d "{
    \"query\" : { \"bool\" : { \"must\" : { \"term\" : { \"_parent\" : 
\"john\" } } } }
}";

# Routed has_parent query. Same
curl -XGET "localhost:9200/the_index/address/_search?routing=john&pretty" 
-d "{
   \"query\" : { 
       \"has_parent\" : {
           \"parent_type\" : \"user\",
           \"query\" : { 
               \"term\" : { 
                   \"_id\" : \"john\" 
               } 
           } 
       } 
    }
}";

# Retrieving a record by itself. Going just fine.
curl -XGET "localhost:9200/the_index/address/smithshouse?parent=john";

# Querying for user record with the same query. Got a hit.
curl -XGET "localhost:9200/the_index/user/_search?pretty" -d "{
    \"query\" : { \"bool\" : { \"must\" : { \"term\" : { \"_parent\" : 
\"mrsmith\" } } } }
}";



The output:

{"acknowledged":true}
{"_index":"the_index","_type":"account","_id":"mrsmith","_version":1,"created":true}{"_index":"the_index","_type":"user","_id":"john","_version":1,"created":true}{"_index":"the_index","_type":"address","_id":"smithshouse","_version":1,"created":true}
{
  "took" : 54,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}
{
  "took" : 221,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}
{
  "took" : 35,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}
{
  "took" : 481,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}
{"_index":"the_index","_type":"address","_id":"smithshouse","_version":1,"found":true,"_source":{
    "baz" : "baz"
}}
{
  "took" : 65,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "the_index",
      "_type" : "user",
      "_id" : "john",
      "_score" : 1.0,
      "_source":{
    "bar" : "bar"
}
    } ]
  }
}

You can find out on resuls that ES got the required shard, but no records 
have been fetched.
Probably I am doing it in a wrong way, and if it so please fix me up.

-- 
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/bbaebc65-a87f-4857-a2a4-577b0b487c6b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to