程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数?

开发过程中遇到创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数的问题如何解决?下面主要结合日常开发的经验,给出你关于创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数的解决方法建议,希望对你解决创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数有所启发或帮助;

我有对象,其中每个对象都有一个非负的“权重”字段。我想将对象分为 10 个间隔为 100 的重量类,我尝试放入“aggs”字段,如下所示:

        "aggs":{
          "weights":{
            "histogram":{
              "interval":100,"fIEld":"weight"
            }
          }
        }

但这会给我每个间隔 100,例如(起始间隔:doc_count)

(0 : 3) (100 : 5) ... (900 : 3) (1000 : 2) (1100 : 5)

我想要的是

(0 : 3) (100 : 5) ... (900 : 10) 其中 10 来自存储桶本身及其之后的所有存储

我尝试使用 range 功能:"range":{"weight":{"to":"1000"}} 但这会忽略第 10 个之后的所有存储桶。这可能与弹性的直方图功能有关吗?或者这是否需要其他东西?

解决方法

如果您只对存储桶的计数(而不是所有 weights 的总和)感兴趣,您可以将所有大于 900 的值强制放入最后一个存储桶使用 range aggregation value script:

{
  "size": 0,"aggs": {
    "weight_ranges": {
      "range": {
        "field": "weight","script": {
          "lang": "painless","source": "_value <= 900 ? _value : 900"
        },"ranges": [
          { "to": 100 },{ "from": 100,"to": 200 },{ "from": 200,"to": 300 },{ "from": 300,"to": 400 },{ "from": 400,"to": 500 },{ "from": 500,"to": 600 },{ "from": 600,"to": 700 },{ "from": 700,"to": 800 },{ "from": 800,"to": 900 },{ "from": 900 }
        ]
      }
    }
  }
}

如果您动态生成这些直方图并且值 900 是任意的/可参数化的,您可以像这样 store the script:

POST _scripts/histogram_cutoff
{
  "script": {
    "lang": "painless","source": "_value <= params.cutoff ? _value : params.cutoff"
  }
}

然后在任何后续查询中通过其 ID 引用它:

POST weights/_search
{
  "size": 0,"script": {
          "id": "histogram_cutoff",<--
          "params": {
            "cutoff": 900
          }
        },...
          { "from": 900 }
        ]
      }
    }
  }
}

大佬总结

以上是大佬教程为你收集整理的创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数全部内容,希望文章能够帮你解决创建一个包含间隔 X 的 N 个桶的直方图,其中最后一个桶还包括大于其间隔的计数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: