2016-12-28 68 views
0

我正在使用ES Jest。我可以搜索並獲得回覆。但是當我用Date屬性進行序列化時,我在序列化後得到了null響應。Elasticsearch JEST日期序列化java

以下是我的ES文檔索引和搜索結果的類。

public class IndexDocument { 
    public long id; 
    @JsonSerialize(using = JsonDateSerializer.class) 
    public Date Date1; 
    @JsonSerialize(using = JsonDateSerializer.class) 
    public Date Date2; 
} 

我有以下代碼爲日期序列從ES

public class JsonDateSerializer extends JsonSerializer<Date> { 
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss.SSSZ"); 
    @Override 
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) 
      throws IOException, JsonProcessingException { 
     String formattedDate = dateFormat.format(date); 
     gen.writeString(formattedDate); 
    } 
} 

響應:

"hits" : [{ 
     "_index" : "myindex", 
     "_type" : "mytype", 
     "_id" : "3", 
     "_score" : 1.3294203, 
     "_source" : { 
      "Date1" : "2016-11-24T14:39:08.000Z", 
      "id" : 1, 
      "Date2" : "1900-01-01T00:00:00.000Z" 
     } 
    } 
] 

我的序列化代碼:

JestResult result = client.execute(search); // i can see the response here 
response = result.getSourceAsObjectList(IndexDocument.class); 

系列化後,我得到了response = null

注意:如果我從indexDocument刪除日期屬性,我可以看到序列化的響應但日期屬性它不起作用。什麼地方出了錯?

+0

我想上面的例子,它工作正常。你能發佈你的映射嗎?當索引上面的例子時,Mine是自動生成的,但你可能有不同的東西。我使用傑克遜2.4.6 – alkis

回答