首页 > 解决方案 > 历史上的今天 elasticsearch

问题描述

我想捕捉今天的历史数据。此查询返回空。我想忽略岁月。

"query": {
    "bool": {
      "filter": [
        {
          "range": {
            "created_at": {
              "gte": "02-15",
              "lte": "02-15",
              "format": "MM-dd"
            }
          }
        }
      ]
    }
  }

标签: dateelasticsearchelasticsearch-query

解决方案


https://www.elastic.co/blog/an-introduction-to-elasticsearch-sql-with-practical-examples-part-1我从文章中得到了帮助。

在这里适应我自己

{
  "query" : {
    "bool" : {
      "must" : [
        {
          "script" : {
            "script" : {
              "source" : "InternalSqlScriptUtils.nullSafeFilter(InternalSqlScriptUtils.eq(InternalSqlScriptUtils.dateTimeChrono(InternalSqlScriptUtils.docValue(doc,params.v0), params.v1, params.v2),params.v3))",
              "lang" : "painless",
              "params" : {
                "v0" : "created_at",
                "v1" : "Z",
                "v2" : "DAY_OF_MONTH",
                "v3" : 15
              }
            }
          }
        },
        {
          "script" : {
            "script" : {
              "source" : "InternalSqlScriptUtils.nullSafeFilter(InternalSqlScriptUtils.eq(InternalSqlScriptUtils.dateTimeChrono(InternalSqlScriptUtils.docValue(doc,params.v0), params.v1, params.v2),params.v3))",
              "lang" : "painless",
              "params" : {
                "v0" : "created_at",
                "v1" : "Z",
                "v2" : "MONTH_OF_YEAR",
                "v3" : 2
              }
            }
          }
        }
      ]
    }
  }
}

这就是我解决问题的方法。也许它会对其他人有用。


推荐阅读