仅显示匹配的工作日

时间:2017-11-28 17:06:02

标签: elasticsearch

在我的索引中,我有一个名为available_weekdays的字段。这是一个工作日从1-7开始的数组。

在我的查询中,我传递了一个格式为{{1}}的start_date。

目标: 我只想显示与start_date工作日匹配的记录。

让我说我将2017-01-01传递给我的查询,即工作日7.我的查询必须将我的通过日期转换为工作日。然后它在available_weekdays字段中检查匹配的工作日。如果在available_weekdays中找到工作日,则返回记录。

ES版本:2.4.4

这可以通过使用脚本过滤器来实现吗?

1 个答案:

答案 0 :(得分:3)

是的,您可以使用script query

执行此操作
{
  "query":{
    "bool":{
      "filter":{
        "script":{
          "script":{
            "lang":"groovy",
            "inline":"doc['available_weekdays'].values.find{it == DateTime.parse(param1).dayOfWeek().get()}",
            "params":{
              "param1":"2017-01-01"
            }
          }
        }
      }
    }
  }
}