如何在Elastic Search中使用术语聚合结果作为新过滤器

时间:2017-05-17 09:42:34

标签: elasticsearch

我在查询中遇到了这个问题:

我们有一个包含所有已启动会话的索引,包含开始日期时间戳,MAC地址等。

我想检索在过去10分钟内开始会话的所有唯一mac,然后检查这些MAC是否是新的(在所有时间只有一个外观)或已经看过(可能是2个月前),并且已经看过多少次了。

例如,对最近10分钟看到的mac进行初始查询,我们得到MAC A和MAC B. MAC A有以前的文件(2个月前和12天前),MAC B没有以前的文件。结果应该是:MAC A - > 3,MAC B - > 1

我正在采用这种方法,但我能得到的是过去10分钟的MAC列表以及所有时间的另一个MAC列表:

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "product_type": {
              "value": "FREE"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "transactions": {
      "filters": {
        "filters": {
          "display_range": {
            "range": {
              "start_timestamp": {
                "from": "2017-05-17T09:00:00Z",
                "to": "2017-05-17T09:10:00Z"
              }
            }
          },
          "all_days_range": {
            "match_all": {}
          }
        }
      },
      "aggs": {
        "unique_macs": {
          "terms": {
            "field": "calling_station_id",
            "size": 0
          }
        }
      }
    }
  }
}

谢谢!

0 个答案:

没有答案