【发布时间】:2020-02-17 15:28:35
【问题描述】:
我想根据字段中的关键字出现来制作存储桶。
我查看了 elasticsearch 文档,发现 Filters Aggregation 应该很合适: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html#search-aggregations-bucket-filters-aggregation
目前我们正在使用 bodybuilder.js 来构建查询。我在源代码 (https://github.com/danpaz/bodybuilder/blob/master/src/aggregation-builder.js#L87) 中发现了一个未记录的函数:
bodybuilder()
.aggregation('terms', 'title', {
_meta: { color: 'blue' }
}, 'titles')
.build()
结果:
{
"aggs": {
"titles": {
"terms": {
"field": "title"
},
"meta": {
"color": "blue"
}
}
}
}
但这实际上与 ES 文档中描述的结构不同:
GET logs/_search
{
"size": 0,
"aggs" : {
"messages" : {
"filters" : {
"filters" : [
{ "match" : { "body" : "error" }},
{ "match" : { "body" : "warning" }}
]
}
}
}
}
知道如何使用 bodybuilder.js 实现过滤器聚合吗?
【问题讨论】:
-
你找到解决方案了吗,我和健美运动员在这里也很挣扎。
标签: elasticsearch bodybuilder.js