es查询语句求助

现在有个数据,字段如下

id expired create_time

需求是筛选出 创建时间+过期时间(秒)<系统当前时间,如果是sql语句的话很简单就是:

select * from table where DATE_ADD(create_time,INTERVAL expired SECOND) < now();

请问在es中应该怎么查询呢?

阅读 4.6k
2 个回答

已经解决了,用script来查询:

GET /.../_search
{
  "query": {
    "bool": {
      "must": [
        {
          "script": {
            "script": {
              "source": "return (doc['create_time'].value.getMillis() + doc['expired'].value * 1000) < new Date().getTime()"
            }
          }
        }
      ]
    }
  },
  "size": 20
}

你先把系统时间减去过期时间,然后判断这个时间和es库里面的创建时间比较不就可以了嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进