Elasticsearch每个过滤器的结果数

时间:2018-01-14 08:10:18

标签: elasticsearch search elasticsearch-5 elasticsearch-6

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

例如我想显示如下结果:

tag1(100)

tag2(130)

city1(77)

city2(95)

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

请注意,用户已选择城市A作为过滤器,现在他看到按城市过滤的搜索结果

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

1 个答案:

答案 0 :(得分:0)

对于具有bool查询的过滤器使用以下内容,对每个标记的项目计数使用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"
      }
    }
  }
}