2016-12-28 3 views
0

Ich benutze ES Jest. Ich kann eine Suche machen und die Antwort bekommen. Aber wenn ich die Sserialisierung mit Date Eigenschaft mache, habe ich null Antwort nach der Serialisierung.Elasticsearch JEST Datum Serialisierung Java

Folgendes ist meine Klasse für ES Dokumentindex und Suchergebnis.

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

Ich habe den folgenden Code für Date Serialisierung

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); 
    } 
} 

Antwort von ES:

"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" 
     } 
    } 
] 

meine Serialisierungscode:

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

nach Serialisierung, ichbekam

HINWEIS: Wenn ich die Date-Eigenschaft aus IndexDocument entfernen, konnte ich die serialisierte Antwort sehen, aber mit der Date-Eigenschaft funktioniert es nicht. Was schief gelaufen ist?

+0

Ich versuche das obige Beispiel und es funktioniert gut. Können Sie Ihr Mapping posten? Meine wird beim Indexieren des obigen Beispiels automatisch generiert, aber Sie könnten etwas anderes haben. Ich benutze Jackson 2.4.6 – alkis

Antwort