2017-08-17 83 views
-1

我知道这个问题在这里被问了好几次。但我需要知道的是,它可能会得到全部 ES中特定字段的唯一值。ElasticSearch读取所有唯一值

我来什么到目前为止:一个场的

  1. 请求基数:
 
{ 
    "size": 0, 
    "aggs": { 
     "unique_count": { 
      "cardinality": { 
       "field": "fieldName" 
      } 
     } 
    } 
} 
  • 推断从基数分区数:total_partitions = unique_count/10。对于每个分区

  • 申请条件:

  •  
    { 
        "size": 0, 
        "aggs": { 
         "value_terms": { 
          "terms": { 
           "field": "fieldName", 
           "include": { 
            "partition": $i, 
            "num_partitions": $total_partitions 
           } 
          } 
         } 
        } 
    } 
    

    它是正确的吗?或者还有其他的方式吗?

    回答

    0

    也许我错过了一些东西在你的问题,但一个简单的汇总应该给你一个特定领域的所有独特价值与相应的计数:

    { 
        "aggs": { 
        "unique_values": { 
         "terms": { 
         "field": "fieldName", 
         "size": 0 
         } 
        } 
        } 
    } 
    
    +0

    不,当有很多独特的术语时,elasticsearch只返回顶部术语。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html –

    +0

    https://discuss.elastic.co/t/aggregation-query-size/ 2分之28393 – mel

    0

    我们结束了elasticsearch-hadoop。它包含Spark 集成。我们以本地模式运行Spark - 最简单的解决方案。