Got my mistake, thank you! And sorry for missing the man page. пятница, 16 января 2015 г., 7:05:17 UTC+3 пользователь Masaru Hasegawa написал: > > Hi Iv, > > You’d need to specify both parent and routing when you index grand > children. > See > http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/grandparents.html > > > > Masaru > > On January 15, 2015 at 20:44:43, Iv Igi ([email protected] <javascript:>) > wrote: > > 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] <javascript:>. > > 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. > > > >
-- 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/c5764ca1-a4cd-419a-873a-9a8dc2985d10%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
