Я использую java.sql.Timestamp 2014-12-27 00:00:00
Java.util.Timestamp => ElasticSearch долго => C# NEST DateTime
и ElasticSearch
сохраняет его как долго1419634800000
с отображением:
"EventDateLocal" : {
"type" : "long"
}
, и я хочу прочитать его на C# (через NEST) в System.DateTime
Я попытался
[Date(NumericResolution = NumericResolutionUnit.Milliseconds)]
public DateTime? EventDateLocal { get; set; }
, но я получил:
Unhandled Exception: Elasticsearch.Net.UnexpectedElasticsearchClientException: U
nexpected token parsing date. Expected String, got Integer.
....
Path 'hits.hits[0]._
source.EventDateLocal', line 1, position 350. ---> Newtonsoft.Json.JsonSerializa
tionException: Unexpected token parsing date. Expected String, got Integer. Path
'hits.hits[0]._source.EventDateLocal', line 1, position 350.
at Newtonsoft.Json.Converters.IsoDateTimeConverter.ReadJson(JsonReader reader
, Type objectType, Object existingValue, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConv
ertable(JsonConverter converter, JsonReader reader, Type objectType, Object exis
tingValue)...
Что я должен поставить в аннотации, чтобы получить этот эффект автоматически (длинный + Unix => EVENTDATE):
foreach (var e in request.Documents)
{
var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var date = start.AddMilliseconds(e.EventDateLocal.Value).ToLocalTime();
}
My NEST c на которых:
var client = new ElasticClient(new ConnectionSettings(new Uri(url))
.DefaultIndex(index)
.DefaultTypeNameInferrer(t => type)
);
Если не с аннотацией, можно как-то сказать NEST о длинных?
client.Map<Event>(m => m
.AutoMap()
.Properties(ps => ps
.Date(e => e
.Name("EventDateLocal")
.Format(????)
)
)
);