值在范围内的文档的 Elasticsearch 计数
Elasticsearch count of documents with values in range
我有一组文档,每个文档都有最小和最大数字字段,例如
{ min: 50, max: 100 },
{ min: 75, max: 125 },
{ min: 75, max: 150 },
...
我事先知道可能的最大值是多少。我想要做的是一个存储桶聚合,用于计算存储桶值包含在文档的最小值和最大值之间(在本示例中假设包含在内)的文档数量。例如,如果我有带键的桶
60, 80, 100, 120, 140, 160
我想找回 doc_counts 的(分别):
1, 3, 3, 2, 1, 0
我觉得使用脚本进行范围聚合让我很接近,但我不确定如何到达那里。也许我需要一个子聚合?
您需要一个 filters
聚合,其中每个键对应一个单独的过滤器。这是两个键的示例
{
"aggs": {
"ranges": {
"filters": {
"filters": {
"60": {
"bool": {
"must": [
{
"range": {
"min": {
"gte": 60.0
}
}
},
{
"range": {
"max": {
"lt": 60.0
}
}
}
]
}
},
"80": {
"bool": {
"must": [
{
"range": {
"min": {
"gte": 80.0
}
}
},
{
"range": {
"max": {
"lt": 80.0
}
}
}
]
}
}
}
}
}
}
}
我认为没有更简单的方法,因为您的范围在单独字段中的文档中
我有一组文档,每个文档都有最小和最大数字字段,例如
{ min: 50, max: 100 },
{ min: 75, max: 125 },
{ min: 75, max: 150 },
...
我事先知道可能的最大值是多少。我想要做的是一个存储桶聚合,用于计算存储桶值包含在文档的最小值和最大值之间(在本示例中假设包含在内)的文档数量。例如,如果我有带键的桶
60, 80, 100, 120, 140, 160
我想找回 doc_counts 的(分别):
1, 3, 3, 2, 1, 0
我觉得使用脚本进行范围聚合让我很接近,但我不确定如何到达那里。也许我需要一个子聚合?
您需要一个 filters
聚合,其中每个键对应一个单独的过滤器。这是两个键的示例
{
"aggs": {
"ranges": {
"filters": {
"filters": {
"60": {
"bool": {
"must": [
{
"range": {
"min": {
"gte": 60.0
}
}
},
{
"range": {
"max": {
"lt": 60.0
}
}
}
]
}
},
"80": {
"bool": {
"must": [
{
"range": {
"min": {
"gte": 80.0
}
}
},
{
"range": {
"max": {
"lt": 80.0
}
}
}
]
}
}
}
}
}
}
}
我认为没有更简单的方法,因为您的范围在单独字段中的文档中