Hi all,
I'm having some difficulties running queries with multiple nested filters.
Consider the following mapping:
{
"template" : "products",
"mappings" : {
"Product" : {
"dynamic" : "false",
"properties" : {
"id" : {
"type" : "long"
},
"name" : {
"type" : "string",
"analyzer" : "standard"
},
"reviews" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"positive" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"reviewCount" : {
"type" : "integer"
},
"keywords" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"id" : {
"type" : "long"
},
"name" : {
"type" : "string",
"analyzer" : "standard"
},
"score": {
"type": "double"
},
"frequency": {
"type": "integer"
}
}
}
}
},
"negative" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"reviewCount" : {
"type" : "integer"
},
"keywords" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"id" : {
"type" : "long"
},
"name" : {
"type" : "string",
"analyzer" : "standard"
},
"score": {
"type": "double"
},
"frequency": {
"type": "integer"
}
}
}
}
}
}
}
}
}
}
}
Running the following query:
NestedFilterBuilder idFilter = nestedFilter( "reviews.positive.keywords",
filteredQuery( matchAllQuery(), termFilter( "reviews.positive.keywords.id",
id ) ) );
NestedFilterBuilder scoreFilter = nestedFilter(
"reviews.positive.keywords", filteredQuery( matchAllQuery(), rangeFilter(
"reviews.positive.keywords.score" ).from( score ).includeLower( true ) ) );
RangeFilterBuilder productScoreFilter = rangeFilter( "score" ).from(
productScore ).includeLower( true );
SearchResponse searchResponse = esClient.prepareSearch( "products" ).
setQuery( filteredQuery( matchAllQuery(), andFilter( productScoreFilter,
idFilter, scoreFilter ) ) ).
setSize( 40000 ).
get();
The returned hits contain results with wrong score, i.e. score lower than
what configured at scoreFilter. Seems like other filters are working
perfect. Am I using the wrong way to apply multiple nested filters?
Thanks!
--
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/cb007c0e-0aa2-4aec-b88c-db53407d114e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.