es 字符串时间格式的字符串怎么做小时查询 Published on Apr 11, 2024 in 随笔 with 0 comment ```java import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptType; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Collections; // 创建一个脚本,用于解析时间字符串并检查小时是否等于指定的小时 Script script = new Script( ScriptType.INLINE, "painless", "def formatter = DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ss');\n" + "def dateTime = LocalDateTime.parse(doc['eventTime'].value, formatter);\n" + "if (dateTime == null) {\n" + " logger.error('Failed to parse eventTime value: ' + doc['eventTime'].value);\n" + "}\n" + "return dateTime.getHour() == Integer.valueOf(params.hour);", Collections.singletonMap("hour", "00") // 设置参数值为字符串类型的 "00" ); // 创建一个脚本查询,匹配指定小时的数据 QueryBuilder scriptQuery = QueryBuilders.scriptQuery(script); // 将脚本查询与其他条件组合 QueryBuilder finalQuery = QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("in_out_type", "1")) // 添加其他条件,例如匹配in_out_type为1的数据 .must(scriptQuery); // 现在你可以使用finalQuery来执行你的Elasticsearch查询 ``` 本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。