ElasticSearch:是否有方法使用参数将_count值从采样器聚合内的桶中除出

8iwquhpp  于 2022-11-28  发布在  ElasticSearch
关注(0)|答案(1)|浏览(141)

我正在努力做一些聚合的基本操作。下面的代码是我想象它可以工作的东西,但它没有。我想完成的是用某个绝对数字(它可以是参数,但这无关紧要)划分每个“value_number”,它是每个类别桶的_count。那么,有没有办法完成这个?提前感谢!
`

"aggs": {
    "test": {
      "sampler": {
        "shard_size": 1000
      },
      "aggs": {
        "categories": {
          "terms": {
            "field": "category",
            "size": 150
          }
        },
        "bucketresults": {
          "bucket_script": {
            "buckets_path": {
              "value_number": "categories>_count"
            },
            "script": "value_number/100"
          }
        }
      }
    }
  }

`

k0pti3hp

k0pti3hp1#

您可以使用以下查询在当前查询中,您需要将bucketresults作为categories内部聚合移动另外,当您访问value_number时,需要使用params.value_number进行访问

{
  "aggs": {
    "test": {
      "sampler": {
        "shard_size": 1000
      },
      "aggs": {
        "categories": {
          "terms": {
            "field": "category",
            "size": 150
          },
          "aggs": {
            "bucketresults": {
              "bucket_script": {
                "buckets_path": {
                  "value_number": "_count"
                },
                "script": "params.value_number/100"
              }
            }
          }
        }
      }
    }
  }
}

以下将是回应:

"aggregations": {
    "test": {
      "doc_count": 5,
      "categories": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
          {
            "key": "apple",
            "doc_count": 5,
            "bucketresults": {
              "value": 0.05
            }
          },
          {
            "key": "iphone",
            "doc_count": 4,
            "bucketresults": {
              "value": 0.04
            }
          },
          {
            "key": "mobile",
            "doc_count": 4,
            "bucketresults": {
              "value": 0.04
            }
          }
        ]
      }
    }
  }

相关问题