弹性搜索采样聚合 UNKNOWN KEY

Elastic Search Sampling Aggregation UNKNOWN KEY

目前正在使用 Kibana 处理超过 60 亿份文档,并尝试根据 'index' 收集样本的特定日期进行抽样。

from elasticsearch import Elasticsearch
es = Elasticsearch(['https://user:secret@localhost:xxx'])

使用以下代码查询:

res = es.search(body=body1)
print(f"Got {res['hits']['total']} Hits:")

当我使用下面的正文时,我得到了所有 60 亿个文档:

body1 = {
            "query": {"match_all": {}}
        }

但是,当我设置聚合管道时,出现错误 RequestError(400, 'parsing exception', 'Unknown key for a START_OBJECT in [my_agg].')

body0 = {
            "query": {"match_all": {}},
            "size": 0,
            "aggs": {
                "my_unbiased_sample": {
                    "diversified_sampler": {
                        "max_docs_per_value" : 3, 
                        "field" : "_index"
                    }
                }
            }, "my_agg": {
                "terms": {
                    "field": "_index"
                }
            }
}

我认为我的问题出在我的第二个聚合器上,而不是我的第一个多样化采样器上。我只想要多样化采样器的输出,但我被迫拥有第二个聚合器。

您就快完成了——只需修复嵌套问题:

{
  "query": {
    "match_all": {}
  },
  "size": 0,
  "aggs": {
    "my_unbiased_sample": {
      "diversified_sampler": {
        "max_docs_per_value": 3,
        "field": "_index"
      },
      "aggs": {
        "my_agg": {
          "terms": {
            "field": "_index"
          }
        }
      }
    }
  }
}