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!
@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.
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