elasticsearch - 获取elasticsearch中每个匹配项的 `n`记录

标签 elasticsearch

我有一个 flex 查询,如下所示:

GET /logs-of-year-2019.03.*/_search
{
  "sort": [
    {
       "@timestamp": "desc"
    }
  ],
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "Request.advertiserId": [1695, 1252]
          }
        }
      ],
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "now-5h/d",
              "lte": "now/d"
            }
          }
        }
      ]
    }
  }
}  

此查询获取所有Request.advertiserId16951252的文档。使用@timestamp过滤器。

结果中包含hits存储桶,其中包含10结果,其中包含1695的一些结果和1252的一些结果的组合。我要实现的是,对于每个指定的20,我都需要n(任何指定的Request.advertiserId)文档。换句话说,20 documents表示169520表示1252。只需1个 flex 查询就可以实现吗?

我现在可以想到的是对每个Request.advertiserId进行不同的查询并指定size=20(这可以是n变量)。但是然后我将不得不针对mm编号触发Request.advertiserId查询。可以在1个单一查询中实现吗?

PS:GET /logs-of-year-2019.03.*/_search上面的行指出,需要扫描指定月份所有日期的日志。索引存储为logs-of-year-2019.03.01-05(2019年3月1日为5th小时的日志),logs-of-year-2019.03.01-06(2019年3月1日为6th hour的日志),依此类推。日志每天每小时创建一次。可以对上述行进行优化,使其从now仅检查5个小时的索引(可以涉及前一天,因为搜索可以在晚上0100进行。因此,它应该比前一天花费21到00个小时,而从00到01个小时则需要(今天的日期)而不是整个月?

最佳答案

我想你可以做

GET /logs-of-year-2019.03.*/_search
{
  "size":0
  "sort": [
    {
       "@timestamp": "desc"
    }
  ],
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "Request.advertiserId": [1695, 1252]
          }
        }
      ],
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "now-5h/d",
              "lte": "now/d"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "byAdvertiser": {
        "terms":{
            "field":"Request.advertiserId"
        },
        "aggs":{
            "by_top_hit":{"top_hits":{"size":10}}
        }
    }
  }
} 

关于elasticsearch - 获取elasticsearch中每个匹配项的 `n`记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512272/

相关文章:

elasticsearch - 有没有一种方法可以按聚合进行分组并获取属于特定分组聚合的所有文档?

elasticsearch - 具有复杂对象的Kibana可视化

elasticsearch - 在Elasticsearch中返回不同的值

php - 无法在Elasticsearch中创建索引

elasticsearch - 如何(暂时)阻止 Elasticsearch 删除已删除的文档?

elasticsearch - 从模板添加别名到索引?

elasticsearch - 如何使用 Spring Data ElasticSearch 为 POJO 定义 ElasticSearch 索引字段名称

logging - 在elasticsearch中存储结构化日志

elasticsearch - Elasticsearch ML是否对较新的ES版本禁用?

symfony - Elasticsearch foselastica 存储库和 groupBy