elasticsearch - 仅显示匹配的工作日

标签 elasticsearch

在我的索引中,我有一个名为 available_weekdays 的字段。这是一个包含 1-7 之间工作日的数组。

在我的查询中,我传递了格式为 'yyyy-MM-dd' 的 start_date。

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

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

ES版本:2.4.4

使用脚本过滤器可以实现这一点吗?

最佳答案

是的,您可以使用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"
            }
          }
        }
      }
    }
  }
}

关于elasticsearch - 仅显示匹配的工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47537174/

相关文章:

elasticsearch - 涉及嵌套模型的复杂轮胎查询

Elasticsearch query_string嵌套查询

node.js - Mongoosastic 插件不更新嵌套对象

lucene - 在 Elasticsearch 查询中获取所有匹配的方面

elasticsearch - 将 Logstash 与 Elasticsearch 输出结合使用时,.raw 字段从何而来?

php - 需要帮助解决 Elasticsearch 中的 fatal error 异常

c# - NEST ElasticSearch Cache QueryDescriptor供将来使用

json - 有没有办法查看查询是否与Elasticsearch中的数组中的任何元素匹配?

c# - 使用Elasticsearch.NET重新创建经Elasticsearch过滤的查询

curl - 无法使用cURL命令从ElasticSearch索引中删除文档