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 elasticsearch+unsubscribe@googlegroups.com.
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.