gpt4 book ai didi

elasticsearch - Elasticsearch 查询过滤器和日期排序

转载 作者:行者123 更新时间:2023-12-03 02:25:39 25 4
gpt4 key购买 nike

假设每天有100条(某些任意数字)记录每天都在 flex 值中以索引字段作为运行日期进行索引。现在,当查询 flex 体时,我们可以形成一个 flex 查询,该查询产生最新的runDate数据。

例如:

所有记录都在一个索引下。

{“runDate”:“11:04:2020” .....} {“runDate”:“11:04:2020” .....} .. * 100条类似的记录。

{“runDate”:“12:04:2020” ......} {“runDate”:“12:04:2020” ......} .. * 150条类似的记录。

查询应返回。

{“runDate”:“12:04:2020” ......} {“runDate”:“12:04:2020” ......} .. * 150条类似的记录。

一种解决方案/两种基于查询的方式。

  • 通过应用sort和size = 1(返回12:04:2020)来获取最新日期。
  • 对步骤1中的日期(12:04:2020)应用匹配查询。

  • 我们能在一个查询中做得更好吗?

    感谢帮助!

    最佳答案

    1.如果您知道记录数,则可以使用单个查询。

    对运行日期排序并获取n条记录

    GET <indexname>/_search
    {
    "from": 0,
    "size": 3, --> n records
    "sort": [
    {
    "runDate": {
    "order": "desc"
    }
    }
    ]
    }

    2.如果您要获取大于当前日期的记录
    GET <indexname>/_search
    {
    "query": {
    "range": {
    "runDate": {
    "gte": "now/d" --> now-1d/d from yesterday, other calculations are available
    }
    }
    },
    "from": 0,
    "size": 3,
    "sort": [
    {
    "runDate": {
    "order": "desc"
    }
    }
    ]
    }

    3.获取最大日期,并使用它来查询该日期
    {
    "size": 0,
    "aggs": {
    "max_date": {
    "max": {
    "field": "runDate"
    }
    }
    }
    }

    关于elasticsearch - Elasticsearch 查询过滤器和日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61177044/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com