0

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!

Puneet Behl
  • 954
  • 7
  • 20
  • 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](https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-aggregations-bucket-terms-aggregation.html) – xeraa Sep 13 '18 at 09: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

1 Answers1

1

Please try below query to migrate facets to 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.

Hope it helps!!

Richa
  • 7,419
  • 6
  • 25
  • 34