В соответствии с вашей проблемой вам также нужен способ группировки пустых полей рынка.Так что для этого вы можете использовать параметр «отсутствующее» значение.Он определяет, как сгруппированные значения, которые отсутствуют (как в вашем случае).Таким образом, ваш запрос в форме json будет изменен, как показано ниже: -
{
"query":
{
"must": [
"range": {
"hour_time_stamp": {
"gte": lastDeviceDate,
"lte": lastDeviceDate
}
}
]
},
"aggs": {
"market_agg" : {
"market": {
"missing": "empty_markets",
"order": { "sum": "asc" }
}
},
"sum_agg": {
"sum" : { "field" : "num_devices" }
}
}
}
Или в вашем коде это можно сделать, добавив отсутствующий параметр, подобный этому.
let queryBody = ejs.Request()
.size(0)
.query(
ejs.BoolQuery()
.must(
ejs.RangeQuery('hour_time_stamp').gte(this.lastDeviceDate).lte(this.lastDeviceDate)
)
)
.agg(ejs.TermsAggregation('market_agg').field('market').missing('empty_markets').order('sum', 'asc').size(50000)
.agg(ejs.SumAggregation('sum').field('num_devices'))
)