目前正在使用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"
}
}
}
我相信我的问题在于第二个聚合器,而不是第一个多样化取样器。我只是想从多样化取样器中得到输出,但我却被迫使用第二个聚合器。
你几乎达到了目的--只是需要解决嵌套的问题。
{
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"my_unbiased_sample": {
"diversified_sampler": {
"max_docs_per_value": 3,
"field": "_index"
},
"aggs": {
"my_agg": {
"terms": {
"field": "_index"
}
}
}
}
}
}