elasticsearch7按照求和字段排序
时间: 2023-12-06 10:02:41 浏览: 77
你可以使用 Elasticsearch 的聚合(aggregation)功能,在排序时按照求和字段进行排序。
以下是一个示例查询,将按照 "count" 字段的求和结果进行排序:
```
GET /your-index-name/_search
{
"size": 0,
"aggs": {
"group_by_field": {
"terms": {
"field": "your-group-by-field"
},
"aggs": {
"sum_of_count": {
"sum": {
"field": "count"
}
}
}
}
},
"sort": [
{
"sum_of_count.value": {
"order": "desc"
}
}
]
}
```
其中,"your-index-name" 是你要查询的索引名称,"your-group-by-field" 是你要按照哪个字段分组,"count" 是你要求和的字段。
你可以根据需要自行修改查询中的字段和参数。
相关问题
es7按照求和字段排序
假设你有一个包含多个对象的数组,每个对象都有一个名为 `value` 的数字属性。你可以使用 `Array.prototype.sort()` 方法来按照求和字段排序。以下是一个示例代码:
```javascript
const arr = [
{ value: 10 },
{ value: 5 },
{ value: 20 },
{ value: 15 }
];
arr.sort((a, b) => {
const sumA = Object.values(a).reduce((acc, curr) => acc + curr);
const sumB = Object.values(b).reduce((acc, curr) => acc + curr);
return sumA - sumB;
});
console.log(arr); // [{ value: 5 }, { value: 10 }, { value: 15 }, { value: 20 }]
```
在这个例子中,我们使用 `Array.prototype.sort()` 方法来排序数组。 `sort` 方法接受一个比较函数作为参数,该函数接受两个参数 `a` 和 `b`,代表要比较的数组项。我们在比较函数中计算每个项的求和值,并根据这些值返回一个结果。最终,我们得到了按求和字段排序的数组。
Elasticsearch:在 Elasticsearch 中的 Composite Aggregation
在 Elasticsearch 中,Composite Aggregation 是一种用于聚合数据的高级聚合类型。它允许您按照多个字段进行分组,并且可以在每个分组中执行其他聚合操作。
Composite Aggregation 的主要作用是在大数据集上进行分组和聚合操作,同时保持较低的内存消耗。它通过使用游标(cursor)的方式来处理大量的结果,以避免将所有结果加载到内存中。
使用 Composite Aggregation,您可以按照指定的字段顺序进行分组,并且可以指定每个字段的排序方式。此外,您还可以在每个分组中执行其他聚合操作,例如计算平均值、求和、最大值等。
以下是使用 Composite Aggregation 的示例查询:
```
GET /your_index/_search
{
"size": 0,
"aggs": {
"group_by_field": {
"composite": {
"sources": [
{
"field1": {
"terms": {
"field": "field1.keyword"
}
}
},
{
"field2": {
"terms": {
"field": "field2.keyword"
}
}
}
]
},
"aggs": {
"avg_field3": {
"avg": {
"field": "field3"
}
},
"sum_field4": {
"sum": {
"field": "field4"
}
}
}
}
}
}
```
上述查询将按照 field1 和 field2 进行分组,并在每个分组中计算 field3 的平均值和 field4 的总和。
阅读全文