node.js - 如何执行子聚合来计算每个桶没有值的字段?
问题描述
目前正在构建以下 Elasticsearch 6.8 查询\聚合:
{
"sort": [
{
"DateCreated": {
"order": "desc"
}
}
],
"query": {
"bool": {
"must": [
{
"match": {
"InternalEntityId": "ExampleValue1111"
}
},
{
"match": {
"Direction": "Inbound"
}
}
]
}
},
"aggs": {
"top_ext": {
"terms": {
"field": "ExternalAddress.keyword"
},
"aggs": {
"top_date": {
"top_hits": {
"sort": [
{
"DateCreated": {
"order": "desc"
}
}
],
"size": 1
}
}
}
}
}
}
我们如何执行(在同一搜索中):
- 计算每个桶中没有值(must_not exists 样式查询)的(每个桶的命中数)的总和
理想情况下,随着top_ext agg return.. 的返回,每个桶都会有一个没有价值的记录计数。
谢谢!
解决方案
现在您可以在这里做两件事,1. 要么按文档计数的 asc 顺序对“top_ext”术语 agg 桶进行排序,您可以在此处使用前 n 个零大小桶 2. 您可以将桶选择器聚合与您的内部并行应用命中,以便只有那些内部命中的文档计数为零。
这是一个使用上述两种方法的查询 dsl。(您可以插入查询的所有其他必需元素,我这里主要关注聚合部分)
GET kibana_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"outer": {
"terms": {
"field": "products.category.keyword",
"size": 10,
"order": {
"_count": "asc"
}
},
"aggs": {
"inner": {
"top_hits": {
"size": 10
}
},
"restrictedBuckets": {
"bucket_selector": {
"buckets_path": {
"docCount": "_count"
},
"script": "params.docCount<1"
}
}
}
}
}
}
推荐阅读
- android - Qt Creator:arm-linux-androideabi-g++:未找到
- vb.net - 我在 vb.net 中的查询出现插入错误
- xamarin - 部署时出现“替换现有签名”错误
- xml - 添加到 XML 输出的命名空间属性
- python - 无法使用来自 Booking*com 的 BeautifulSoup find() 获得所需的标签
- openmodelica - OMedit - 为具有四个轮子的车身建模
- css - 如何仅倾斜到反射框
- c++ - 如何找到 CL_DEVICE_MAX_WORK_GROUP_SIZE 的值
- .htaccess - 编辑 htaccess 导致内部服务器错误 500
- c# - 在不同位置使用标签(WinForm)