2016-07-27 39 views
0

我登錄ElasticSearch用戶動作和我使用C#log4net的商店當使用log4net的

我使用C#NEST庫訪問ElasticSearch數據庫的整數值到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到經過值存儲爲一個整數指定一個模板,但如何做到這一點:

目前存儲經過時間,當我這樣做呢?

回答

1

如果你想讓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的是字符串,但場2是數字。

+0

uhm ..謝謝你的回答,但我用ES對話使用NEST2 –

+0

可能是該頁面幫助:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/auto -map.html#屬性映射 – alpert