如何从弹性搜索中获取最后30分钟的记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从弹性搜索中获取最后30分钟的记录相关的知识,希望对你有一定的参考价值。

I am using following query to fetch all last 30 minutes records using elastic search, but I'm getting parsable error on line "now-30m".



    Query: 
{

  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "appName": "magnus-alerting-system"
          }
        },
        {
          "match": {
            "countryCode": "US2"
          }
        },
        {
          "match": {
            "eventCode": 201
          }
        },
        {
          "match": {
            "extractName": "LaborDemand"
          }
        },{
          "range": {
            "eventPostTimestamp": {
              **"gte": "now()-30m"**
            }
          }
        }

      ]
    }
  }
}

邮递员在执行服务时出错:“root_cause”:[{“type”:“number_format_exception”,“reason”:“输入字符串:”now() - 30m “”}]

让我知道如何纠正它。

答案

原因是因为now() - 在弹性搜索中30米是错误的,因为正确的格式只是“现在”。 Documentation

因此,正确的查询如下:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "appName": "magnus-alerting-system"
          }
        },
        {
          "match": {
            "countryCode": "US2"
          }
        },
        {
          "match": {
            "eventCode": 201
          }
        },
        {
          "match": {
            "extractName": "LaborDemand"
          }
        },{
          "range": {
          "eventPostTimestamp": {
          "gte": "now-30m"
            }
          }
        }

      ]
    }
  }
}
另一答案

data math中使用range query for date field的正确语法如下:

{
  "range": {
    "eventPostTimestamp": {
      "gte": "now-30m"
    }
  }
}

以上是关于如何从弹性搜索中获取最后30分钟的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何从搜索结果中获取所有值

通过python将弹性数据转储到csv或任何NOSQL中

如何从“活动”中的“编辑”文本中获取值并将其用于片段?

如何将弹性搜索索引或日志从一个弹性搜索服务器复制到另一台?

如何从 Angular 的弹性框中的组件中获取元素信息

从弹性索引中提取数据,处理并返回