大佬教程收集整理的这篇文章主要介绍了创建一个包含间隔 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,请注明来意。