当使用spring-data插入Date类型的Elasticsearch文档时,我无法获得正确的日期格式,日期格式始终为Long。
这是Java代码:Entity.java
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldIndex;
import org.springframework.data.elasticsearch.annotations.FieldType;
import com.fasterxml.jackson.annotation.JsonProperty;
@Document(indexName = "entity-index", type = "entity-type")
public class Entity {
@Id
private String id;
@Field(type = FieldType.Date, index = FieldIndex.not_analyzed, store = true,
format = DateFormat.custom, pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'")
private Date createDate;
private String system;
private double score;
@Field(type = FieldType.Date, format = DateFormat.date_optional_time)
@JsonProperty(value = "@timestamp")
private Date updateDate;
// omit setter and getter
}
这是测试
public class EntityDAOTest {
@Autowired
private ElasticsearchTemplate template;
@Before
public void init() {
template.createIndex(Entity.class);
template.putMapping(Entity.class);
}
@Test
public void testCreate() {
Entity entity = new Entity();
entity.setId("5");
entity.setCreateDate(new DateTime(2015,05,27,0,0).toDate());
entity.setUpdateDate(new DateTime(2015,05,27,0,0).toDate());
entity.setSystem("systemC");
entity.setScore(5.7);
IndexQuery query = new IndexQueryBuilder().withObject(entity).withId(entity.getId()).build();
template.index(query);
}
我可以获取创建的实体的映射:
{
"entity-index": {
"mappings": {
"entity-type": {
"properties": {
"@timestamp": {
"type": "long"
},
"createDate": {
"type": "date",
"store": true,
"format": "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"
},
"id": {
"type": "string"
},
"score": {
"type": "double"
},
"system": {
"type": "string"
},
"updateDate": {
"type": "date",
"format": "date_optional_time"
}
}
}
}
}
}
但是,当我搜索它时curl -X GET /entity-index/_search
,会得到以下文档:
{
"id": "5",
"createDate": 1432656000000,
"system": "systemC",
"score": 5.7,
"@timestamp": 1432656000000
}
并且“日期”字段均为长型,如何获取日期格式:“ 2015-08-17T12:00:00.000”?
您的映射已正确创建。该问题更有可能来自Jackson JSON序列化程序。您应该尝试将此注释添加到日期字段:中@JsonFormat (shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd'T'HH:mm:ss.SSSZZ")
。
还有一些其他解决方案可能更适合您的情况(即,创建一个CustomDateSerializer
,等等)。
我在使用Apache POI3.9阅读Excel表中的条件格式时遇到了困难。Excel文件是使用MS Excel2010创建的,添加了一些条件格式(我解压缩了。xlsx文件,检查了sheet1.xml,它有几个x14:ConditionalFormatting标记),但是sheet.getSheetConditionalFormatting().getNumConditionalFormattin
当我尝试在日期格式选项中使用正确的数据(包括时间,例如:2018-01-01 07:00:00))添加或编辑新行时,我尝试在日期格式选项中使用“newform: Y-m-d H: i: s”总是返回无效的日期警告。 有人能帮我把它正常工作吗? JSFIDLE:链接
本文向大家介绍js严格模式总结(分享),包括了js严格模式总结(分享)的使用技巧和注意事项,需要的朋友参考一下 首页,我们要理解严格模式的概念,严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,病增强安全性。可以对部分函数进行执行严格模式,如: function func(){ 'use strict' } 也可以对整个js文件进行执行严格模式,如: 'use stric
此代码给出了预期的XML输出: 但当我试图通过更改以json格式获取数据时: @产品(MediaType.APPLICATION_XML)到@产品(媒体类型。APPLICATION_JSON),我得到一个错误: 严重:未找到媒体类型为application/json,类型为class-com的MessageBodyWriter。市场。英亩。dummyapp。测验ForTest,genericTyp
本文向大家介绍javascript日期格式化方法汇总,包括了javascript日期格式化方法汇总的使用技巧和注意事项,需要的朋友参考一下 方法一: 调用方式: var time1 = new Date().Format("yyyy-MM-dd"); var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss"); 方法二: 方法三: 方法四: 方法五:
本文向大家介绍JS严格模式知识点总结,包括了JS严格模式知识点总结的使用技巧和注意事项,需要的朋友参考一下 所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict” 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式 1.严格模式下没有全局变量 a="test" 严格模式下会报错,非严格模式下正常 2.删除变量 var 有三种声明的情形 v