elasticsearch - 如何在ElasticSearch中应用后过滤器以过滤掉某些值?

标签 elasticsearch elasticsearch-aggregation

我想过滤扩展统计聚合返回的统计。我基本上需要过滤掉avg为0的所有值。

下面是一个示例查询,在这里我需要过滤这些值。我认为我应该应用 post_filter 。但是,我不确定要过滤出特定值时应如何应用后置过滤器。能否请你帮忙?

    "aggs": {
      "variable_grp": {
        "terms": {
          "field": "variable",
          "size": 200,
          "order": { "stats.avg": "asc" }
        },
        "aggs": {
          "stats": {
            "extended_stats": { "field": "value_num" }
          }
        }
      }
    }, 
    "size":0

最佳答案

您可以使用bucket_selector管道聚合来实现所需的功能:

{
  "aggs": {
    "variable_grp": {
      "terms": {
        "field": "variable",
        "size": 200,
        "order": {
          "stats.avg": "asc"
        }
      },
      "aggs": {
        "stats": {
          "extended_stats": {
            "field": "value_num"
          }
        },
        "avg_gt_0": {
          "bucket_selector": {
            "buckets_path": {
              "avgStats": "stats.avg"
            },
            "script": "params.avgStats > 0"
          }
        }
      }
    }
  }
}

关于elasticsearch - 如何在ElasticSearch中应用后过滤器以过滤掉某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54570873/

相关文章:

elasticsearch - 如何在写入ElasticSearch时使用更新API(无痛)连接对象而不是整个对象

elasticsearch - elasticsearch如何识别哪些字段具有共同的聚合值

elasticsearch - Elasticsearch中的多个聚合

java - 在 Elasticsearch 中使用 NativeSearchQueryBuilder 时,如果与 multiMatchQuery 结合使用,rangequery 过滤器会失败

elasticsearch - 计算消息的平均响应时间

ElasticSearch 从每个类别中选择一个得分最高的产品

docker - 将Dockerized Elasticsearch与多个Docker主机集群化

javascript - Elasticsearch javascript 数组中的搜索字段

java - 试图调用一个不存在的方法...纠正类路径

Elasticsearch如何在映射中指定索引为false的关键字数组?