小编red*_*olt的帖子

如何从Java中的聚合桶中获取elasticsearch聚合查询结果的值

因此,我已经能够使用elasticsearch高级restclient在Java中根据需要复制elasticsearch查询。问题是我无法检索我想要的值。在提供代码之前,我想解决总体目标,以防有更简单的解决方案(似乎这不必那么困难。)

总体目标:获取“推荐者”字段中每个唯一值“已访问”==true 的文档数量。

我当前的状态:我已经能够在 kibana/elasticsearch 中编写具有所需输出的查询,但是当我在 Java 中复制此查询时,我无法访问我需要的数据。(使用 searchRequest.source().toString 进行验证())。

这是查询:

{
  "aggs":{
    "recommenderIDs": {
      "terms": {
        "field": "recommender"
      },
      "aggs": {
        "visit_stats": {
          "filters": {
            "filters": {
              "visited": {
                "match":{
                  "visited": true
                }
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的 java 代码中的内容:

// ...
        SearchRequest searchRequest = new SearchRequest(INDEX_REC_RECOMMENDATIONS);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        String aggregationName = "recommenderId";
        String filterName = "wasVisited";
        TermsAggregationBuilder aggQuery = AggregationBuilders
                .terms(aggregationName)
                .field(RecommendationRepoFieldNames.RECOMMENDER);
        AggregationBuilder aggFilters = AggregationBuilders.filters(
                filterName,
                new FiltersAggregator.KeyedFilter(
                        RecommendationRepoFieldNames.RECOMMENDER,
                        QueryBuilders.termQuery(RecommendationRepoFieldNames.VISITED, …
Run Code Online (Sandbox Code Playgroud)

java elasticsearch elasticsearch-high-level-restclient

0
推荐指数
1
解决办法
5805
查看次数