I recently ran into a problem of missing documents in query result when
custom score script is used. After some testing, I found that the problem
seems occur when the script tries to access a field in a nested doc where a
particular root document does not contain any such nested doc.
To reproduce the problem, test data and queries can be found here:
http://goo.gl/iHOc5. The example may not make much sense in real world, but
the idea is to sort products by average rate from users' review. One
particular requirement is to always treat anonymous user's rate as 3 and
assign rate as 3 for products with no reviews.
We can determine whether a user is anonymous or not by
checking review.user.member_id field is empty or not:
doc['review.user.member_id'].empty, this seems work fine except that
products with no reviews are dropped out in the result as the first query
example shows. Is this a bug? As there is no query/filter that excludes
documents, shouldn't all documents be returned?
Also, there seems no way to determine whether a review exists or not. The
second query example shows doc['review'].empty does not work, this makes
sense because indeed, there is not such field as 'review' under the
'product' index, 'review' is a nested document. However, the question
remains: is there a way to determine the existence of a nested doc?
Any help will be greatly appreciated!
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@example.com.
For more options, visit https://groups.google.com/groups/opt_out.