Migrating ElasticSearch Java API FacetFilter (in early version) to simliar Aggregation in ES v5.5.3

Migrating ElasticSearch Java API FacetFilter (in early version) to simliar Aggregation in ES v5.5.3



I am migrating a Grails application using Elasticsearch Java v0.93 to version 5.5.3. One of the challenges I am facing is to migrate Facet Filter to a similar Aggregation.



Following is the code from the early version of Elasticsearch Java API:


FacetBuilders
.termsFacet("f").field("brand").size(50) // Your facet
.allTerms(true)
.facetFilter( // Your filter here
FilterBuilders.boolFilter()
);



As per the Elasticsearch Java API "Facets has been removed and it is recommended to use filter aggregation or filters aggregation.



Thanks!






It's been a while, but basically you want to get the 50 most common (brand) terms without a filter? That should be a straight forward terms aggregation

– xeraa
Sep 13 '18 at 9:53






@xeraa what do you mean by without a filter? Also, FilterBuilders.boolFilter() has other must filters which I didn't mention in this question.

– Puneet Behl
Sep 13 '18 at 10:10


FilterBuilders.boolFilter()


must




1 Answer
1



Please try below query to migrate facets to Aggregation


facets


Aggregation


AggregationBuilders.filter("Filter By Some Property", QueryBuilders.termQuery("some Field", "value"))
.subAggregation(AggregationBuilders.terms("Group By Some Other property").field("brand").size(50));



Here you can use any type of query in filter method. Have used Term Query just as an example.


filter


Term Query



Hope it helps!!



Thanks for contributing an answer to Stack Overflow!



But avoid



To learn more, see our tips on writing great answers.



Required, but never shown



Required, but never shown




By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.