def build(self):
fs = self._clone()
for facet in self.facets:
if "include_%s" % facet.name not in self.args:
continue
agg_filter = esd.Q("match_all")
for inner in self.facets:
if inner.name != facet.name:
if inner.is_filtered(self.args):
agg_filter &= inner.filters(self.args)
for agg_name, agg in facet.aggregates():
fs.aggs.bucket("_filter_" + agg_name, "filter", filter=agg_filter).bucket(agg_name, agg)
post_filter = esd.Q('match_all')
for facet in self.facets:
if facet.is_filtered(self.args):
post_filter &= facet.filters(self.args)
fs.post_filter._proxied &= post_filter
return fs
评论列表
文章目录