【问题标题】:Elastic Search (COUNT*) query弹性搜索 (COUNT*) 查询
【发布时间】:2021-10-11 17:31:18
【问题描述】:

这似乎相对简单,但我是 Query DSL 的新手。大家能帮我把它变成代码吗?...

假设,我有一个“航班数据”集,其中日期 1-1-2000 和 1-10-2000 包含许多航班(flightId、flightDest 等),我想计算这两个日期之间的*航班间隔一天。

谢谢

【问题讨论】:

  • 请分享您的地图

标签: elasticsearch querydsl


【解决方案1】:

请求的查询如下所示:

GET flight_data_set/_search
{
  "size": 0,
  "query": {
    "range": {
      "flight_date": {
        "gte": "2000-01-01",
        "lte": "2000-10-01"
      }
    }
  }, 
  "aggs": {
    "flight_count_per_day": {
      "date_histogram": {
        "field": "flight_date",
        "interval": "day"
      }
    }
  }
}

【讨论】:

  • 是的!你是一个好人。为了让阅读本文的人清楚,我提出的情况仅与我的实际情况类似,因此上述代码与我使用的代码不是 1:1 的。 “间隔”也已弃用,应使用“calendar_interval”
  • 嘿,如果我还想通过搜索词过滤结果,例如“消息”字段应包含“[成功登录]”,您是否也可以回复该版本的代码? @SaeedNasehi
  • 为此,您需要使用 bool 查询,如下所示:"size":0,"query":{"bool":{"must":[{"range":{"flight_date" :{"gte":"2000-01-01","lte":"2000-10-01"}}},{"match":{"message":"[登录成功]"}}]}} ,"aggs":{"flight_count_per_day":{"date_histogram":{"field":"flight_date","interval":"day"}}}}
  • 您上面的查询没有返回结果?为什么要获取数据时将大小设置为零?
  • 没问题。如果我理解得很好,当你不添加匹配部分时你会得到结果吗?并且通过添加此部分,您没有收到任何结果?我可以在您的索引中查看您的文档吗?
猜你喜欢
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
相关资源
最近更新 更多