计算"填充率" Elasticsearch中的一个字段

时间:2016-04-18 14:55:20

标签: elasticsearch

我想计算在我的索引中具有值的字段的比率。

我设法计算了多少文件错过了这个领域:

GET profiles/_search
{
  "aggs": {
    "profiles_wo_country": {
      "missing": {
        "field": "country"
      }
    }
  },
  "size": 0
}

我还设法计算了提交的文件数量:

GET profiles/_search
{
  "query": {
    "filtered": {
      "query": {"match_all": {}},
      "filter": {
        "exists": {
          "field": "country"
        }
      }
    }
  },
  "size": 0
}

当然,我也可以获得索引中的文档总数。我该如何计算比率?

1 个答案:

答案 0 :(得分:0)

从查询中获取所需数字的简便方法是使用以下查询

POST profiles/_search?filter_path=hits.total,aggregations.existing.doc_count
{
  "size": 0,
  "aggs": {
    "existing": {
      "filter": {
        "exists": {
          "field": "tag"
        }
      }
    }
  }
}

您会收到类似这样的回复:

{
   "hits": {
      "total": 37258601
   },
   "aggregations": {
      "existing": {
        "doc_count": 9287160
      }
   }
}

然后在您的客户端代码中,您只需执行

fill_rate = (aggregations.existing.doc_count / hits.total) * 100

你很高兴。