弹性搜索采样聚合 UNKNOWN KEY

问题描述 投票:1回答:1

目前正在使用Kibana处理60亿+文档,并试图根据 "索引"(即收集样本的特定日期)进行抽样。

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"
                }
            }
}

我相信我的问题在于第二个聚合器,而不是第一个多样化取样器。我只是想从多样化取样器中得到输出,但我却被迫使用第二个聚合器。

python elasticsearch kibana sampling elasticsearch-aggregation
1个回答
1
投票

你几乎达到了目的--只是需要解决嵌套的问题。

{
  "query": {
    "match_all": {}
  },
  "size": 0,
  "aggs": {
    "my_unbiased_sample": {
      "diversified_sampler": {
        "max_docs_per_value": 3,
        "field": "_index"
      },
      "aggs": {
        "my_agg": {
          "terms": {
            "field": "_index"
          }
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.