如何通过Elasticsearch查询获取大写格式的完整星期名称?
解决方案
要获取全大写的完整星期名称,你可以通过调整日期格式规则或脚本处理来实现,以下是两种可行方案:
方法1:使用日期格式修饰符
Elasticsearch中EEEE是输出完整星期名称的格式符,搭配^^^upper修饰符可直接将结果转为全大写。修改后的查询如下:
{ "date_histogram": { "calendar_interval": "day", "field": "record_created_at", "format": "EEEE^^^upper" } }
方法2:使用脚本自定义处理
如果需要更灵活的控制,可通过脚本手动提取星期名称并转换为大写:
{ "date_histogram": { "calendar_interval": "day", "field": "record_created_at", "script": { "source": "doc['record_created_at'].value.dayOfWeek.getDisplayName(TextStyle.FULL, Locale.ROOT).toUpperCase()" } } }
补充说明
- 你原查询中用的
E是星期的三字母缩写格式符,而EEEE才对应完整星期名称。 ^^^upper是Elasticsearch内置的格式修饰符,专门用于将格式化后的文本转为全大写。- 脚本方案里,
dayOfWeek.getDisplayName(TextStyle.FULL, Locale.ROOT)用于获取无本地化的完整星期名称,再通过toUpperCase()统一转为大写。
内容的提问来源于stack exchange,提问作者DilLip_Chowdary
相关产品推荐
相关产品推荐

