如何在 ElasticSearch 中聚合嵌套文档的大小?

How to aggregate on size of nested document in ElasticSearch?

嵌套字段名称是交易。

每个文档都有一个交易列表。

我想汇总一下交易的数量。我寻求的信息是超过一笔交易的文件数量。

我尝试了以下方法:

"aggs": {
"tx_count": {
  "terms": {
    "script": {
      "inline": "if(doc['transactions'].size>1){return 1;} else {return 0;}"
    }
  }
}

}

还尝试在嵌套聚合中使用此聚合。有没有办法做到这一点? 我目前使用的是 ES 5.6 版。

您可以使用params._source来计算transactions长度:

{
  "size": 0,
  "aggs": {
    "tx_count": {
      "terms": {
        "script": {
          "inline": "if (params._source['transactions'].size() > 1) { return 1; } else { return 0; }"
        }
      }
    }
  }
}

顺便说一句,请注意它是 .size(),而不是 .size