elasticsearch - Elasticsearch 6.3.1 崩溃基于两个字段
问题描述
我的数据库看起来像:
[
{
"header": {
"date": "2021-11-01 22:16:48",
"net_name": "a",
"batch_size": 8,
"result": 50
}
},
{
"header": {
"date": "2021-11-02 22:16:48",
"net_name": "a",
"batch_size": 8,
"result": 1000
}
},
{
"header": {
"date": "2021-11-02 22:16:48",
"net_name": "a",
"batch_size": 12,
"result": 1000
}
},
{
"header": {
"date": "2021-11-01 22:16:48",
"net_name": "b",
"batch_size": 8,
"result": 1000
}
},
{
"header": {
"date": "2021-11-02 22:16:48",
"net_name": "b",
"batch_size": 12,
"result": 1000
}
},
{
"header": {
"date": "2021-11-01 22:16:48",
"net_name": "b",
"batch_size": 12,
"result": 50
}
}
]
我正在使用 Elasticsearch,我需要一个查询来返回每个 net_name + batch_size 组合的最新文档(根据这两个字段折叠)
即我希望结果是
net_name,batch_size,result
"a",8,1000
"a",12,1000
"b",8,1000
"b",12,1000
我尝试使用“折叠”选项,但没有找到如何根据两个字段的组合进行折叠
解决方案
我理解你的意思是在基于 net_name,batch_size 崩溃时获得最大时间值。例如:
{
"sort":[{"header.net_name":"asc"}],
"collapse":{
"field":"header.net_name",
"inner_hits":{
"name":"somename",
"collapse":"header.batch_size",
"sort":[{"header.date":"desc"}]
}
}
}
- 按 net_name 排序
- 按 net_name 折叠
- 按日期排序
- 按 batch_size 折叠你会得到你想要的。
推荐阅读
- java - 如何编写一个通用的 java 方法来返回带有空值检查的值?
- postgresql - 容器中的 TimescaleDB
- java - 以前工作的 Spring Boot 应用程序现在给出 NoClassDefFoundError
- testing - 有没有办法将 testcafe 与我的本地服务器通信?
- algorithm - 找到 DAG 的 k 个随机拓扑类型
- c# - 迭代json子节点c#
- reactjs - 如何使用反应测试库测试流畅的 ui 下拉列表?
- sql - SQL 最大值但也显示来自其他列的值
- docker - Docker容器卷未安装
- stata - 将 spss 导入 Stata 时删除空变量