javascript - 如何在elasticsearch中聚合具有空数据和缺失字段的字段?
问题描述
我有弹性搜索数据库如下:
{
"market": "NEW YORK",
"hour_time_stamp": "2019-08-24 01:00:00",
"model_year": 2014,
"num_devices": 28
},
{
"market": "COLUMBIA",
"hour_time_stamp": "2019-08-12 01:00:00",
"model_year": 2019,
"num_devices": 2
},
{
"market": null,
"hour_time_stamp": "2019-08-11 01:00:00",
"model_year": 2016,
"num_devices": 1
},
{
"hour_time_stamp": "2019-08-02 01:00:00",
"model_year": 2014,
"num_devices": 750
},
{
"market": "COLUMBIA",
"hour_time_stamp": "2019-07-12 01:00:00",
"model_year": 2018,
"num_devices": 21
}
如您所见,市场的某些值是空的,在某些情况下市场字段丢失。我编写了以下 elastic.js 查询来获取市场并对其执行聚合:
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').order('sum', 'desc').size(50000)
.agg(ejs.SumAggregation('sum').field('num_devices'))
);
我需要的数据是该市场的市场名称和 num_devices 的总和(因为可以重复市场)。我写的查询只返回定义市场价值的市场。我需要在我的桶中包括缺失的市场以及“市场”:null。任何想法我该怎么做?
解决方案
推荐阅读
- javascript - 如何使用 Javascript 在移动设备上将 DataURL 下载为 png?
- glut - 有没有办法加快 Glut 中按键的反应时间?
- mongodb - 如何根据前一个元素在 MongoDB 中搜索元素?
- python - 修改 ipywidgets 按钮文字颜色
- python - 在这个例子中如何使用 OpenCV?
- python - windows无法识别python时如何运行“python setup.py install”?
- python - Spark Job 卡住了将数据帧写入分区 Delta 表
- python - 为什么我在 python 中的登录表单无法正常工作?
- vue.js - 未找到 TextGeometry.js 和 FontLoader.js 依赖项
- python - 如何在包含 2 个外键的行中插入 sql?