从Elasticsearch中的关键类别获取数据

时间:2018-06-21 11:32:09

标签: elasticsearch

我有这些文件:

curl -XPOST -H 'Content-Type: application/json' "http://localhost:9200/test/_bulk?pretty" -d'
{"index":{"_index":"test","_type":"product"}}
{"id_product":"1", "categories":[1,2] }
{"index":{"_index":"test","_type":"product"}}
{"id_product":"2", "categories":[25,28] }

我只需要获取类别。 我可以得到类似的输出吗?

[1,2,25,28]

1 个答案:

答案 0 :(得分:1)

我认为无法告诉ES仅返回categories,但是您可以使用terms aggregation来提取搜索上下文具有的所有类别。

示例:

{
  "size":0,
  "aggs":{
    "byCategory":{
      "terms":{
        "field": "categories"
      }
    }
  }
}

这将返回类似:

{
  "aggregations": {
    "byCategory": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": 1,
          "doc_count": 1
        },
        {
          "key": 2,
          "doc_count": 1
        },
        {
          "key": 25,
          "doc_count": 1
        },
        {
          "key": 28,
          "doc_count": 1
        }
      ]
    }
  }
}

如您所见,现在您可以遍历buckets.key以提取搜索中存在的所有类别。