Update: posted to Stack Overflow with bounty: http://stackoverflow.com/questions/21289149/trouble-with-has-parent-query-containing-scripted-function-score
On Thursday, January 16, 2014 11:11:27 AM UTC-5, Paul Bellora wrote: > > I have two document types, in a parent-child relationship: > > "myParent" : { > "properties" : { > "weight" : { > "type" : "double" > } > } > } > > > "myChild" : { > "_parent" : { > "type" : "myParent" > }, > "_routing" : { > "required" : true > } > } > > > The weight field is to be used for custom scoring/sorting. This query > directly against the parent documents works as intended: > > { > "query" : { > "function_score" : { > "script_score" : { > "script" : "_score * doc['weight'].value" > } > } > > } > } > > > However, when trying to do similar scoring for the child documents with a > has_parent query, I get an error: > > { > "query" : { > "has_parent" : { > "query" : { > "function_score" : { > > "script_score" : { > "script" : "_score * doc['weight'].value" > } > } > }, > "parent_type" : "myParent", > "score_type" : "score" > } > } > } > > > The error is: > > QueryPhaseExecutionException[[myIndex][3]: > query[filtered(ParentQuery[myParent](filtered(function score > (ConstantScore(*:*),function=script[_score * doc['weight'].value], params > [null]))->cache(_type:myParent)))->cache(_type:myChild)],from[0],size[10]: > Query Failed [failed to execute context rewrite]]; nested: > ElasticSearchIllegalArgumentException[No field found for [weight] in > mapping with types [myChild]]; > > It seems like instead of taking the result of the scoring function and > applying it to the child, ES is taking the scoring *function* and > applying it to the child, hence the error. > > If I don't use score for score_type, the error doesn't occur, although > the results scores are then all 1.0, as documented. > > What am I missing here? How can I query these child documents with custom > scoring based on a parent field? > -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/a3ec1600-157e-45e9-b006-37cddc2b422f%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.