使用 Log4Net 时将整数值存储到 ElasticSearch
Store an integer value into ElasticSearch when using Log4Net
我在 ElasticSearch 中记录用户操作,我使用的是 C# Log4Net
我正在使用 C# NEST 库访问 ElasticSearch 数据库。
我的日志行如下所示:
{
"_index" : "log-2016.07.27",
"_type" : "logEvent",
"_id" : "AVYrwmW5Hc5CAgECpn_X",
"_score" : 1.0,
"_source" : {
"timeStamp" : "2016-07-27T09:49:35.3774113Z",
"message" : "Upload file operation took 11683 ms",
"loggerName" : "Reviewer.Web.WebApi.GroupsController",
"identity" : "",
"level" : "INFO",
"properties" : {
"log4net:UserName" : "CORP\g",
"log4net:ElapsedTime" : "11683",
"log4net:Identity" : "",
"IP" : "::1",
"log4net:HostName" : "GBWOTIOM68052D",
"@timestamp" : "2016-07-27T09:49:35.3774113Z"
}
}
我想将 log4net:ElapsedTime
值存储为整数而不是字符串。
目前我在存储经过的时间时正在这样做:
long ms = 1000;
LogicalThreadContext.Properties["log4net:ElapsedTime"] = ms;
我知道我应该指定一个模板来告诉 ElasticSearch 将经过的值存储为一个整数,但是该怎么做呢?
如果您希望 elasticsearch 识别您的字段,您应该发送不带双引号的数据值。
curl -XPUT 'localhost:9200/tmp/tmp/1' -d '{
"field1":"3",
"field2":3
}'
-
curl -XGET 'localhost:9200/tmp'
{"tmp":{"aliases":{},"mappings":{"tmp":{"properties":{"field1":{"type":"string"},"field2":{"type":"long"}}}},"settings":{"index":{"creation_date":"1469621916488","uuid":"Qj64-CU5RUW6ShOyRqLZXQ","number_of_replicas":"0","number_of_shards":"1","version":{"created":"1070599"}}},"warmers":{}}}
可以看到field1是字符串,field2是数字。
我在 ElasticSearch 中记录用户操作,我使用的是 C# Log4Net
我正在使用 C# NEST 库访问 ElasticSearch 数据库。
我的日志行如下所示:
{
"_index" : "log-2016.07.27",
"_type" : "logEvent",
"_id" : "AVYrwmW5Hc5CAgECpn_X",
"_score" : 1.0,
"_source" : {
"timeStamp" : "2016-07-27T09:49:35.3774113Z",
"message" : "Upload file operation took 11683 ms",
"loggerName" : "Reviewer.Web.WebApi.GroupsController",
"identity" : "",
"level" : "INFO",
"properties" : {
"log4net:UserName" : "CORP\g",
"log4net:ElapsedTime" : "11683",
"log4net:Identity" : "",
"IP" : "::1",
"log4net:HostName" : "GBWOTIOM68052D",
"@timestamp" : "2016-07-27T09:49:35.3774113Z"
}
}
我想将 log4net:ElapsedTime
值存储为整数而不是字符串。
目前我在存储经过的时间时正在这样做:
long ms = 1000;
LogicalThreadContext.Properties["log4net:ElapsedTime"] = ms;
我知道我应该指定一个模板来告诉 ElasticSearch 将经过的值存储为一个整数,但是该怎么做呢?
如果您希望 elasticsearch 识别您的字段,您应该发送不带双引号的数据值。
curl -XPUT 'localhost:9200/tmp/tmp/1' -d '{
"field1":"3",
"field2":3
}'
-
curl -XGET 'localhost:9200/tmp'
{"tmp":{"aliases":{},"mappings":{"tmp":{"properties":{"field1":{"type":"string"},"field2":{"type":"long"}}}},"settings":{"index":{"creation_date":"1469621916488","uuid":"Qj64-CU5RUW6ShOyRqLZXQ","number_of_replicas":"0","number_of_shards":"1","version":{"created":"1070599"}}},"warmers":{}}}
可以看到field1是字符串,field2是数字。