#go #elasticsearch
# #Вперед #elasticsearch
Вопрос:
У меня есть записи, которые содержат столбец количества, который может быть отрицательным или положительным. Я хочу вычислить общее количество, где значения положительны.
Я знаю, что могу рассчитать сумму, используя elastic.NewSumAggregation().Field("quantity")
, но я не уверен, как включить только положительные строки.
Любой орган может помочь? Спасибо
Ответ №1:
Добавление рабочего примера
Индексируйте примеры документов
{
"quantity": 10
}
{
"quantity": -10
}
{
"quantity": 25
}
{
"quantity": -25
}
Поисковый запрос
{
"query": {
"range": {
"quantity": {. // filter only for positive quantity.
"gte": 0
}
}
},
"aggs": {
"quantity": {
"sum": {
"field": "quantity"
}
}
}
}
И результат поиска
"hits": [
{
"_index": "65188985",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"quantity": 10
}
},
{
"_index": "65188985",
"_type": "_doc",
"_id": "4",
"_score": 1.0,
"_source": {
"quantity": 25
}
}
]
},
"aggregations": { // note this aggregation part, which is sum of 10 and 25.
"quantity": {
"value": 35.0
}
}
Если вы хотите извлечь только часть агрегации, укажите size=0
для части запроса.
{
"size":0,
"query": {
"range": {
"quantity": {
"gte": 0
}
}
},
"aggs": {
"quantity": {
"sum": {
"field": "quantity"
}
}
}
}
Выше будет выведен ответ ниже
"aggregations": {
"quantity": {
"value": 35.0
}
}