我对DSL非常陌生,目前正努力在弹性搜索索引中的多个字段上执行类似“groupby”的复合SQL。我从参考文件上了解到www.elastic.co术语聚合不支持从同一文档中的多个字段收集术语。
为克服此限制,提供了两个选项:脚本或复制到字段。
在我使用脚本或复制请求意见/解决方案之前,我想了解是否已用尽所有其他选项。
当前成功运行的代码是:
query_result = {"query":{
"bool": {
"must": [{"range": {"flStDttmEst": {"gte":"2017-06-20 10:00:00","lte":"2017-06-20 11:55:00",}}},
],
"filter": [
{"terms": {"proto": ["6","17"]}},
{"terms": {"dstAd": ["165.130.217.", "165.130.217.","165.130.217.","165.130.217.","165.130.217." ]}}
],
}
},
"aggregations":{
"SumPKTSaggs":{
"date_histogram":{"field":"flStDttmEst","interval":"hour","format":"yyyy-MM-dd HH:mm:ss"},
"aggs":{"SumPkts":{
"sum":{"field":"smPkts"}}}},
"SumACKaggs":{
"date_histogram":{"field":"flStDttmEst","interval":"hour","format":"yyyy-MM-dd HH:mm:ss"},
"aggs":{"SumACK":{
"sum":{"field":"smACK"}}}}
}
}
return
JSON和Python数据帧的输出是:
{
"SumACKaggs": {
"buckets": [
{
"SumACK": {
"value": 23721.0
},
"doc_count": 19493,
"key": 1497952800000,
"key_as_string": "2017-06-20 10:00:00"
},
{
"SumACK": {
"value": 23530.0
},
"doc_count": 19441,
"key": 1497956400000,
"key_as_string": "2017-06-20 11:00:00"
}
]
},
"SumPKTSaggs": {
"buckets": [
{
"SumPkts": {
"value": 1310745.0
},
"doc_count": 19493,
"key": 1497952800000,
"key_as_string": "2017-06-20 10:00:00"
},
{
"SumPkts": {
"value": 1308840.0
},
"doc_count": 19441,
"key": 1497956400000,
"key_as_string": "2017-06-20 11:00:00"
}
]
}
}
time SumOfPkts SumOfACKs
0 2017-06-20 10:00:00 1310745.0 23721.0
1 2017-06-20 11:00:00 1308840.0 23530.0
然而,我的最终目标是不仅使用时间作为“groupby”聚合,而且使用proto和dstAd等其他变量。你知道吗
请建议和感谢您这么多的时间!!你知道吗
史蒂夫
目前没有回答
相关问题 更多 >
编程相关推荐