我有一个索引,dataField
定义为:
"ts":{"type":"date","format":"strict_date_optional_time||epoch_millis"}
当我尝试使用{<1}}时使用:
rangeQuery
格式
gte=1522871220000, lte=1522881220000
我明白了:
java.lang.IllegalArgumentException:非法模式组件:p at org.joda.time.format.DateTimeFormat.parsePatternTo(DateTimeFormat.java:566) at org.joda.time.format.DateTimeFormat.createFormatterForPattern(DateTimeFormat.java:687) 在org.joda.time.format.DateTimeFormat.forPattern(DateTimeFormat.java:177)
当我DateTime.parse(source.get("ts").get.asInstanceOf[String],
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"))
查询我的索引时,我看到:
curl
为什么我会收到此异常?
答案 0 :(得分:0)
forPattern
方法中出现此异常,因此 引起此错误的代码是:
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
但是这并没有抛出任何异常。我可以获得相同异常的唯一方法是在模式字符串中放置p
:
// this throws the same exception you've got
DateTimeFormat.forPattern("pyyyy-MM-dd'T'HH:mm:ss.SSSZ")
^
因为p
不是模式中允许使用的字母之一,请参阅javadoc以获取更多信息:http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html
无论如何,我有一些猜测:
p
创建格式化程序在模式中)