에 입력하는 Serilog 진정한 AutoRegisterTemplate =와 ElasticSearch 침몰탄성 검색 매핑 강하게 내가 사용하는 .NET
{
"@timestamp": "2016-08-17T08:57:37.3487446+02:00",
"level": "Information",
"messageTemplate": "User login {UserId}",
"message": "User login ...,
"fields": {
"UserId": "...",
"ProcessId": 15568,
"ThreadId": 14,
"MachineName": "...",
"EnvironmentUserName": "...",
"HttpRequestId": "...",
"HttpRequestClientHostIP": "::1",
"HttpRequestType": "POST",
"Version": "1.0.0.0"
}
}
ElasticSearch에 다음과 같은 저장
DynamicResponse를 사용하여 색인을 쿼리 할 수 있습니다. var searchResponse = client.Search<DynamicResponse>(s => s
.Index("logstash-*")
.AllTypes()
.Size(50)
.Query(q => q.Bool(b => b.Must(bs => bs.Term(p => p.Field("fields.UserId.raw").Value("..."))))
)
);
그러나 결과에 대해 강력한 형식의 클래스를 사용하고 싶습니다.
다음 클래스를 사용해 보았습니다.
public class LogResponse
{
public string Message { get; set; }
[Date(Name = "@timestamp")]
public DateTime Timestamp { get; set; }
public LogResponseFields Fields { get; set; }
public class LogResponseFields
{
public Guid UserId { get; set; }
}
}
그러나 타임 스탬프가 설정되지 않은, DateTime.Min에 대한 기본값은 모두 메시지와 사용자 아이디가 올바르게 매핑됩니다.
@timestamp 필드를 매핑하는 방법은 무엇입니까?
Elasticsearch의 매핑은 어떻게됩니까? –