繁体   English   中英

如何通过日期字段过滤 elasticsearch 并修改日期

[英]How to filter elasticsearch by date field with date modification

要按日期过滤,我使用以下查询:

'body'  => [
    'query' => [
        'bool' => [
             'filter' => [
                  'range' => [
                      'expire_at' => [
                          'gte' => now()
                      ]
                 ]
             ]
         ]
    ]
]

UPD:所有记录都有另一个日期字段 - last_checked。 问题是如何在 select 记录中,例如,(expire_at - 7 days) > last_checked?

使用此代码

"expire_at" => array(
    "lt" => "now+7d/d"
)

检查范围查询文档:您可以在范围参数中使用日期数学 例如, expire_at - 7 days < now()表示到期将在接下来的 7 天内。 然后你可以这样做:

"range": {
  "expire_at": {
    "lt": "now+7d/d"
  }
}

请注意,这也包括已经过期的项目。 如果要避免这种情况,可以添加尚未满足到期日期的条件:

"range": {
  "expire_at": {
    "lt": "now+7d/d",
    "gte": "now/d"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM