Kibana 中 SQL“Distinct”的等价物是什么?

Ask*_*kMe 3 elasticsearch kibana kibana-5

我\xe2\x80\x99m 是 Kibana 和 Elasticsearch 的新手。我有一个名为 的字段名称serviceprovidername。我想知道该领域存在多少个不同的服务提供商名称。我怎样才能实现这个目标?

\n

这是我到目前为止所尝试过的。

\n
\n

搜索查询

\n
\n
GET _search{\xe2\x80\x9cages\xe2\x80\x9d: {\xe2\x80\x9cdistinct_serviceprovidername\xe2\x80\x9d:{\xe2\x80\x9cterms\xe2\x80\x9d:{\xe2\x80\x9cfield\xe2\x80\x9d :\xe2\x80\x9dserviceprovidername\xe2\x80\x9d}}}}\n
Run Code Online (Sandbox Code Playgroud)\n

如果我的原始数据是这样的

\n
 Serviceprovidername \n _______________________\n          X\n          Y\n          X\n          Y\n          Y\n          Z\n
Run Code Online (Sandbox Code Playgroud)\n

I\xe2\x80\x99m 例外结果为:

\n
    Serviceprovidername \n    _______________________\n             X\n             Y\n             Z\n
Run Code Online (Sandbox Code Playgroud)\n

kah*_*eci 5

如果您可以在 Kibana > DevTools > Console 上运行以下“术语聚合”,那么它应该可以工作:

GET /_search
{
    "size": 0,
    "aggs" : {
        "distinct_serviceprovidername" : {
            "terms" : { "field" : "serviceprovidername" }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该查询返回一个多桶值源,包括不同的serviceprovidername字段值,如下所示:

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 15601,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "distinct_serviceprovidername" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 67,
      "buckets" : [
        {
          "key" : "X",
          "doc_count" : 301
        },
        {
          "key" : "Y",
          "doc_count" : 207
        },
        {
          "key" : "Z",
          "doc_count" : 175
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:"size": 0当需要聚合但不需要搜索命中时使用。在这种情况下,获取搜索命中没有任何意义,因此我忽略它,通过仅返回聚合结果来提高请求效率。