【发布时间】:2021-03-19 18:58:47
【问题描述】:
我有一些共享属性的数据,假设我有这些文档:
{
session: "session-1",
status: "New",
},
{
session: "session-1",
title: "My session",
},
{
session: "session-1",
message: "hi there",
},
{
session: "session-2",
status: "Closed",
},
{
session: "session-2",
message: "hi!",
},
如果我进行聚合:
body: {
aggs: {
sessions: {
field: "session",
},
},
},
我得到两个存储桶,其中包含 3 个和 2 个文档:
"aggregations": {
"sessions": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "session-1",
"doc_count": 3
},
{
"key": "session-2",
"doc_count": 2
},
]
}
}
我可以以某种方式对存储桶运行过滤器或查询吗?
body: {
aggs: {
sessions: {
field: "session",
},
aggs: {
filter_docs: { bool: must [{ match: { message: "hi" } }, { match: { status: "New" } }],
}
},
},
我知道我可以对所有文档应用query,但我希望能够在子文档中执行更复杂的过滤器(即过滤掉同时包含message: hi 和status: New 的存储桶)
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation