2016-07-27 14 views
0

を使用しているとき、私はElasticSearchでのユーザーアクションをログに記録していると私は私がElasticSearchデータベースにアクセスするためのC#のNESTライブラリを使用しているC#log4netのストア整数値log4netの

を使用しています。

マイログ行は次のようになります。

{ 
     "_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":{}}} 

あなたはフィールド1が文字列であるが、数値フィールド2で見ることができます。

+0

あなたの答えはありがたいですが、NEST2を使ってESと話します –

+0

そのページが役立つかもしれません:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/auto -map.html#attribute-mapping – alpert