JSON中没有date类型,es中的date可以由下面3种方式表示:
①格式化的date字符串,例如"2018-01-01"或者"2018-01-01 12:00:00"
②一个long型的数字,代表从1970年1月1号0点到现在的毫秒数
③一个integer型的数字,代表从1970年1月1号0点到现在的秒数
在es内部,date被转为UTC,并被存储为一个长整型数字,代表从1970年1月1号0点到现在的毫秒数
date类型字段上的查询会在内部被转为对long型值的范围查询,查询的结果类型是字符串。
假如插入的时候,值是"2018-01-01",则返回"2018-01-01"
假如插入的时候,值是"2018-01-01 12:00:00",则返回"2018-01-01 12:00:00"
假如插入的时候,值是1514736000000,则返回"1514736000000"。(进去是long型,出来是String型)
date格式可以在put mapping的时候用 format 参数指定,如果不指定的话,则启用默认格式,是"strict_date_optional_time||epoch_millis"。这表明只接受符合"strict_date_optional_time"格式的字符串值,或者long型数字。
strict_date_optional_time是date_optional_time的严格级别,这个严格指的是年份、月份、天必须分别以4位、2位、2位表示,不足两位的