ES表达式如何检索某个日期为2023年的数据

ES表达式如何检索某个日期为2023年的数据
比如已有日期为:2022年1月1日,2023年1月1日

你可以使用Elasticsearch 的脚本字段(Script Fields)功能可以用于对字符串进行截取和过滤操作。DSL如下:


{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
            "source": "doc['your_string_field'].value.substring(0, 3) == '2023'",
            "lang": "painless"
          }
        }
      }
    }
  }
}

这样效率比较低,建议使用date类型,添加format类型 如下


 "createTime" : {
          "type":"date",
          "format": "strict_date_optional_time||yyyy-MM-dd'T'HH:mm:ssZ||yyyy-MM-dd HH:mm:ss||yyyy年MM月dd日||yyyy-MM-dd||epoch_millis"
        }

然后再用pai的range 进行范围搜索。
如果对你有帮助,麻烦点一下采纳,谢谢。