在Kibana中等效的SQL是“ Distinct”吗?

时间:2018-12-19 18:22:40

标签: elasticsearch kibana kibana-5

我是Kibana和Elasticsearch的新手。 我有一个名为# MERGE ON INDICATORS (FULL OUTER JOIN) merge_df <- merge(un_1, ets_1, by=c("country", "iso2", "year", "sector"), all=TRUE, suffixes=c("", "_")) final_df <- within(merge_df, { # FILL IN MISSINGS WITH UNDERSCORE COLS UNemissions <- ifelse(is.na(UNemissions), UNemissions_, UNemissions) ETSemissions <- ifelse(is.na(ETSemissions), ETSemissions_, ETSemissions) # REMOVE FILL-IN UNDERSCORE COLS UNemissions_ <- NULL ETSemissions_ <- NULL }) 的字段名称。我想查找此字段中存在多少个不同的服务提供商名称。我该如何实现?

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

  

搜索查询

serviceprovidername

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

GET _search{“ages”: {“distinct_serviceprovidername”:{“terms”:{“field” :”serviceprovidername”}}}}

我的结果除外:

 Serviceprovidername 
 _______________________
          X
          Y
          X
          Y
          Y
          Z

请帮助

3 个答案:

答案 0 :(得分:1)

如果您可以在Kibana> DevTools>控制台上运行以下“术语聚合”,则该术语应适用:

GET /_search
{
    "size": 0,
    "aggs" : {
        "distinct_serviceprovidername" : {
            "terms" : { "field" : "serviceprovidername" }
        }
    }
}

查询返回一个多桶值源,其中包括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
        }
      ]
    }
  }
}

编辑:"size": 0用于需要汇总但不需要搜索匹配的情况。在这种情况下,获取搜索结果没有任何意义,因此我忽略了它,只返回聚合结果就可以提高请求的效率。

答案 1 :(得分:0)

就我而言,它与通配符搜索和正则表达式完美配合。

这就是我的数据Tags:All Docs,Domains,ToAnalyse,Unique

我在“标签”列上应用了过滤器,并获得了唯一计数。

下面是我的查询:

GET test1/_search
{
  "aggs": {
    "7772": {
      "filters": {
        "filters": {
          "Unique": {
            "query_string": {
              "query": "Tags:Unique",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "ToAnalyse": {
            "query_string": {
              "query": "Tags:To.*",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "All Docs": {
            "query_string": {
              "query": "Tags:All Docs",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "Outdated": {
            "query_string": {
              "query": "Tags:Outdated",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "Domains": {
            "query_string": {
              "query": "Tags:Domains",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          }
        }
      }
    }
  },
  "size": 0,
  "_source": {
    "excludes": []
  }
}

我的输出:

{
  "took" : 12,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 152636,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "7772" : {
      "buckets" : {
        "All Docs" : {
          "doc_count" : 152636
        },
        "Domains" : {
          "doc_count" : 43374
        },
        "Outdated" : {
          "doc_count" : 24322
        },
        "ToAnalyse" : {
          "doc_count" : 128260
        },
        "Unique" : {
          "doc_count" : 152636
        }
      }
    }
  }
}

希望这会有所帮助:)

答案 2 :(得分:-1)

我在基巴纳州没有发现一种“与众不同”的东西。不过,我可以按照建议在x-y轴上进行绘制。谢谢您的帮助。