我有多个主题(布尔值),我想对它们进行聚合。 e.g。
topic A -> car AND bike
topic B -> movies AND entertainment
topic C -> (X OR Y) AND Z
我有很多像这样的布尔列表,以主题的形式分类。每个布尔值都比上例中所示的复杂。
不,我想基于使用聚合的主题显示计数,或者我想显示每个主题的数据的每日分手。 e.g。
topic A -> X records
topic B -> Y records
topic C -> Z records
现在我正在向elasticsearch发送单独的请求以计算每个主题,然后将输出组合成最终数组。由于涉及的http请求数量很多,这个过程需要花费很多时间。
建议我实现这一目标的有效方法。
注意:主题布尔值是可更改的,因此我们无法为记录分配标签。
答案 0 :(得分:2)
您有一个搜索查询列表,您的目标是获取(仅)每个查询的匹配数。
对于只有一个查询,这将是count API。
要同时查看一个查询,您应使用“match_all”进行搜索并使用filters Aggregation。您也可以使用大小= 0的Multi Search API。
答案 1 :(得分:1)
您可以使用过滤器聚合并在其中应用任意bool过滤器:
"aggs" : {
"My Booleans" : {
"filters" : {
"filters" : {
"Topic A" : { "bool" : { "filter" : [{ "match": { "my_prop": "car" } }, { "match": { "my_prop": "bike" } }] } }
}
}
}
}
Bool过滤器可用于构建任意复杂的过滤器逻辑,因为它们提供AND,OR和NOT逻辑,并且可以嵌套。