0

考虑我有一个数据集和多个过滤器,当用户添加新过滤器或删除新过滤器时,我想知道每个过滤器下有多少记录抵抗。

例如我想显示这样的结果:

标签 1 ( 100 )

标签 2 ( 130 )

城市 1 ( 77 )

城市 2 ( 95 )

如何使用 Elasticsearch 6 实现这一目标?

考虑一下,用户已选择城市 A 作为过滤器,现在他看到按城市过滤的搜索结果,

现在其他过滤器是例如类别和流派,如果我也选择类别 B,或者如果我选择类别 C,我想在类别本身之前显示记录数。

4

1 回答 1

0

使用以下过滤器进行布尔查询,并使用 agg 作为每个标签的项目数。

文件样本:

{
    "id": 8,
    "title": "eight",
    "tags": [
        {"name":"tag1"}, 
        {"name":"tag2"}
    ]
}

询问:

{
  "size":0,
  "query" : {
      "bool" : {
          "must" : [
            { "term" : { "tags.name" : "tag2" } },
            { "term" : { "tags.name" : "tag3" } }
          ]
        }
    },
  "aggs": {
    "tags": {
      "terms": {
        "field": "tags.name"
      }
    }
  }
}
于 2018-01-15T05:30:00.663 回答