繁体   English   中英

Elasticsearch。 使用术语汇总,返回文档计数小于某个值的值

[英]Elasticsearch. Using term aggregation, return values where doc count is less than some value

我想使用术语汇总按字段(在我的情况下为帐户ID)将值分组,并且仅返回doc_count小于某个值的字段。

我可以指定min_doc_count参数,但是没有max_doc_count。 因此,我正在寻找一种模拟此行为的方法。 我的许多尝试之一是这样做,但它不起作用。

{
  "size": 0,
  "aggs": {
    "by_account": {
      "terms": {
        "field": "accountId"
      },
      "aggs": {
        "by_account_filtered": {
          "bucket_selector": {
            "buckets_path": {
              "totalDocs": "_count"
            },
            "script": "params.totalDocs < 10000"
          }
        }
      }
    }
  }
}

我究竟做错了什么?

bucket_selector聚合需要嵌套(因为它是父类型的聚合 ),并且需要嵌套用于过滤存储桶的度量标准聚合。

因此,我们使用顶级 terms聚合,然后使用嵌套的value_count聚合将存储桶doc_count暴露给同级的selector_bucket聚合

尝试这个 :

{
  "size": 0,
  "aggs": {
    "by_account": {
      "terms": {
        "field": "accountId"
      },
      "aggs": {
        "by_account_number": {
          "value_count" : {
            "field" : "accountId"
          }
        },
        "by_account_filtered": {
          "bucket_selector": {
            "buckets_path": {
              "totalDocs": "by_account_number"
            },
            "script": "params.totalDocs < 10000"
          }
        }
      }
    }

  }
}

编辑:如果您想获得最低的帐户doc_count

{
      "size": 0,
      "aggs": {
        "by_account": {
          "terms": {
            "field": "accountId",
            "order" : { "_count" : "asc" },
            "size": 100
          },
          "aggs": {
            "by_account_number": {
              "value_count" : {
                "field" : "accountId"
              }
            },
            "by_account_filtered": {
              "bucket_selector": {
                "buckets_path": {
                  "totalDocs": "by_account_number"
                },
                "script": "params.totalDocs < 10000"
              }
            }
          }
        }

      }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM