【问题标题】:Migrating ElasticSearch Java API FacetFilter (in early version) to simliar Aggregation in ES v5.5.3将 ElasticSearch Java API FacetFilter(早期版本)迁移到 ES v5.5.3 中的类似聚合
【发布时间】:2019-02-18 00:08:59
【问题描述】:

我正在将使用 Elasticsearch Java v0.93 的 Grails 应用程序迁移到版本 5.5.3。我面临的挑战之一是将Facet Filter 迁移到类似的Aggregation

以下是 Elasticsearch Java API 早期版本的代码:

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

根据 Elasticsearch Java API“Facets 已被删除,建议使用filter aggregationfilters aggregation

谢谢!

【问题讨论】:

  • 已经有一段时间了,但基本上你想在没有过滤器的情况下获得 50 个最常见的(品牌)术语?那应该是直截了当的terms aggregation
  • @xeraa 没有过滤器是什么意思?此外,FilterBuilders.boolFilter() 还有其他 must 过滤器,我在这个问题中没有提到。

标签: elasticsearch aggregation elasticsearch-5 facet elasticsearch-aggregation


【解决方案1】:

请尝试以下查询以将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));

在这里您可以在filter 方法中使用任何类型的查询。以Term Query为例。

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2023-01-04
    • 2022-08-14
    • 2021-03-05
    • 2017-02-20
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多