使用elasticsearch查询客户端java API获取字符串字段的不同值

问题描述 投票:1回答:2

我正在使用elasticsearch 5.4

我需要使用elasticsearch查询获得不同的字段值

我正在尝试此查询,但无法正常工作

GET /index/index_type/_search
{
  "size": 0,
  "aggs": {
    "distinct": {
      "terms": {
        "field": "status"
      }
    }
  }

谢谢

elasticsearch-5
2个回答
0
投票

客户端java api elasticsearch 5.4的解决方案

import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
TransportClient client;
SearchResponse response = client.prepareSearch(indexName).setTypes(typeName)
                .addAggregation(AggregationBuilders.terms("distinct_line_status").field("line_status.keyword"))
                .setSize(0).get();
        //AggregationProfileShardResult searchHits = response.getAggregations().getAsMap();
        System.out.println(response);
        Terms genders = response.getAggregations().get("distinct_line_status");

        // For each entry
        for (Terms.Bucket entry : genders.getBuckets()) {
            System.out.println(entry.getKey());      // Term
            System.out.println(entry.getDocCount()); // Doc count
        }

0
投票

您可以使用基数来实现此目的。

GET /index/index_type/_search
{
  "size": 0,
  "aggs": {
    "distinct": {
      "cardinality": {
        "field": "status"
      }
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.