Elasticsearch:如何获得字段的前10个不同值

时间:2016-02-17 20:02:08

标签: elasticsearch elasticsearch-2.0

我试图将字段的前1个不同值作为

GET /indexName/test/_search?search_type=count
{
  "aggs": {
    "my_fields": {
      "terms": {
        "field": "col1",
        "size": 10
      }
    }
  }

}

这就是我得到的

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "hits": {
    "total": 21030,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "my_fields": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "",
          "doc_count": 21030
        }
      ]
    }
  }
}

总共我有21030个记录,因此是doc_count。但这不是我期待的结果。我的查询有问题吗?

跟进:如果我想在应用过滤器后获得前10个值,该怎么办?

3 个答案:

答案 0 :(得分:1)

您可以尝试基数指标。我认为它会解决你的问题。

GET /indexName/test/_search

{     “大小”:10,     “aggs”:{         “distinct_colors”:{             “基数”:{               “field”:“col1”             }         }     } }

答案 1 :(得分:1)

以下Lucene查询可用于获得前10个不同年份:

#DISTINCT
    GET index_name/type_name/_search?size=10
    {
      "aggs":{
        "distict_Year":{
          "cardinality": {
            "field": "Year"
          }
        }
      }
    }

See here for more

答案 2 :(得分:0)

你也可以使用它,我认为这就是你要搜索的内容,

 GET /bank/account/_search?search_type=count
          {
           "aggs": {
              "my_fields": {
                   "terms": {
                   "field": "age",
                        "size": 10
                             }
                            }
                   }
           }