ElasticSearch:使用过滤器查询从所有结果中获取方面

时间:2016-03-11 07:49:59

标签: elasticsearch filter facet

我不知道这个问题的标题是否足够清楚。

我在ElasticSearch的左窗格中有一个带语言过滤器的文本搜索。当从搜索结果(来自查询)的左窗格中选择特定语言过滤器时,我仍然希望从查询的所有搜索结果中获取语言构面。我知道在Solr中这是可能的,但我不确定这在ElasticSearch中是否可行。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用post_filter代替普通过滤器来实现此目的。 <asp:UpdatePanel ID="UpdatePanel" runat="server"> <ContentTemplate> <asp:FileUpload ID="FileUpload" runat="server" /> <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick = "btnUpLoad_OnClick" /> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID = "btnUpload" /> </Triggers> </asp:UpdatePanel> 做的是在完整数据集上计算聚合之后过滤文档。

所以不要这样:

post_filter

这样做:

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "some_field": "some_value"
        }
      }
    }
  },
  "aggs": {
    "languages": {
      "terms": {
        "field": "language"
      }
    }
  }
}