假设我有一个相对简单的索引,其中包含以下字段...
并且这会返回如下(节选)结果:
然而,这些数据会被输入到网站前端,需要同时显示代码和名称。所以问题是,是否可能修改查询以返回结果中的
我已经了解了子聚合,但在这种情况下,
在SQL中(此数据最初来自ElasticSearch之前),我将编写以下查询。
"testdata": {
"properties": {
"code": {
"type": "integer"
},
"name": {
"type": "string"
},
"year": {
"type": "integer"
},
"value": {
"type": "integer"
}
}
}
我可以编写一个查询来获取按代码
聚合的值的总和,如下所示:
{
"from":0,
"size":0,
"aggs": {
"by_code": {
"terms": {
"field": "code"
},
"aggs": {
"total_value": {
"sum": {
"field": "value"
}
}
}
}
}
}
并且这会返回如下(节选)结果:
"aggregations": {
"by_code": {
"doc_count_error_upper_bound": 478,
"sum_other_doc_count": 328116,
"buckets": [
{
"key": 236948,
"doc_count": 739,
"total_value": {
"value": 12537
}
},
然而,这些数据会被输入到网站前端,需要同时显示代码和名称。所以问题是,是否可能修改查询以返回结果中的
name
字段和code
字段?举个例子,结果可以看起来像这样:"aggregations": {
"by_code": {
"doc_count_error_upper_bound": 478,
"sum_other_doc_count": 328116,
"buckets": [
{
"key": 236948,
"code": 236948,
"name": "Test Name",
"doc_count": 739,
"total_value": {
"value": 12537
}
},
我已经了解了子聚合,但在这种情况下,
code
和name
之间存在一对一的关系(因此,您不会为相同的键拥有不同的名称)。另外,在我的实际情况中,还有其他5个字段,比如description
,我想返回,所以我想知道是否有另一种方法来做到这一点。在SQL中(此数据最初来自ElasticSearch之前),我将编写以下查询。
SELECT Code, Name, SUM(Value) AS Total_Value
FROM [TestData]
GROUP BY Code, Name