2017-08-03 15 views
0

私は、単一ノード上に小さなELK 5.4.0スタックサーバーを実行しています。私が始めたとき、私はちょうど各インデックスのための5つの断片を意味したすべてのデフォルトを取った。私はこれらすべての破片のオーバーヘッドをしたくなかったので、私はそうのようなインデックス・テンプレートを作成しました:これはうまく働いたElasticsearchインデックステンプレートの生の文字列マッピングが失われました。

PUT /_template/logstash 
{ 
    "template": "logstash*", 
    "settings": { 
    "number_of_shards": 1, 
    "number_of_replicas": 0 
    } 
} 

が、私はちょうどすべての私の生のフィールドが今ESに欠けていることに気づきました。たとえば、 "uri"は私の索引付けされたフィールドの1つであり、私は "uri.raw"を解析されていないバージョンとして取得していました。しかし、私はテンプレートを更新してから、それらは欠落しています。現在のテンプレートの表示を見る

GET /_template/logstash 
Returns: 
{ 
    "logstash": { 
     "order": 0, 
     "template": "logstash*", 
     "settings": { 
      "index": { 
       "number_of_shards": "1", 
       "number_of_replicas": "0" 
      } 
     }, 
     "mappings": {}, 
     "aliases": {} 
    } 
} 

マッピングが欠落しているようです。私は以前、インデックス

GET /logstash-2017.03.01 

オフマッピングを引くと私はマッピング構造が

mappings: { 
    "logs": { 
     "_all": {...}, 
     "dynamic_templates": {...}, 
     "properties": {...} 
    }, 
    "_default_": { 
     "_all": {...}, 
     "dynamic_templates": {...}, 
     "properties": {...} 
    } 
} 

ようがあった月にそのバックご覧ください。ここ最近1

GET /logstash-2017.08.01 

とそれを比較することができます今私はただ持っています

mappings: { 
    "logs": { 
     "properties": {...} 
    } 
} 

dynamic_templatesハッシュは、「生の」フィールドの作成に関する情報を保持します。

私の推測では、私は(logstashによってオーバー送られているフィールドの現在のリストを保持している)

PUT /_template/logstash 
{ 
    "template": "logstash*", 
    "settings": { 
    "number_of_shards": 1, 
    "number_of_replicas": 0 
    }, 
    "mappings": { 
    "logs": { 
     "_all": {...}, 
     "dynamic_templates": {...}, 
    }, 
    "_default_": { 
     "_all": {...}, 
     "dynamic_templates": {...}, 
     "properties": {...} 
    } 
} 

IOW、logs.propertiesが、すべてに私のインデックステンプレートを更新するために追加する必要があるということです。

しかし私はES専門家ではなく、今はちょっと心配です。私の元のインデックステンプレートは、私が思ったようにうまくいかなかった。私の上の計画は働くだろうか?あるいは、私は物事を悪化させるつもりですか?あなたはいつもすべてを含める必要がありますインデックステンプレートを作成するとき?テンプレートファイルを作成する前に、古いインデックスのマッピングはどこから来たのですか?

答えて

1

Logstashを初めて起動すると、elasticsearch出力プラグインは、_default_テンプレートを使用してits own index templatedynamic_templatesを正しくインストールしてインストールします。

毎回、Logstashによって新しいlogstash-*インデックスが作成されます(毎日)、テンプレートが活用され、テンプレートに適切なマッピングがあるインデックスが作成されます。あなたが今行う必要がある何

は、あなたが上書きされている公式のlogstashテンプレートを取ると、このようにそれを再インストールします(ただし、変更シャード設定で)するだけです:あなたはそれを行っている可能性が

PUT /_template/logstash 
{ 
    "template" : "logstash-*", 
    "version" : 50001, 
    "settings" : { 
    "index.refresh_interval" : "5s" 
    "index.number_of_shards": 1, 
    "index.number_of_replicas": 0 
    }, 
    "mappings" : { 
    "_default_" : { 
     "_all" : {"enabled" : true, "norms" : false}, 
     "dynamic_templates" : [ { 
     "message_field" : { 
      "path_match" : "message", 
      "match_mapping_type" : "string", 
      "mapping" : { 
      "type" : "text", 
      "norms" : false 
      } 
     } 
     }, { 
     "string_fields" : { 
      "match" : "*", 
      "match_mapping_type" : "string", 
      "mapping" : { 
      "type" : "text", "norms" : false, 
      "fields" : { 
       "keyword" : { "type": "keyword", "ignore_above": 256 } 
      } 
      } 
     } 
     } ], 
     "properties" : { 
     "@timestamp": { "type": "date", "include_in_all": false }, 
     "@version": { "type": "keyword", "include_in_all": false }, 
     "geoip" : { 
      "dynamic": true, 
      "properties" : { 
      "ip": { "type": "ip" }, 
      "location" : { "type" : "geo_point" }, 
      "latitude" : { "type" : "half_float" }, 
      "longitude" : { "type" : "half_float" } 
      } 
     } 
     } 
    } 
    } 
} 

別の方法logstashテンプレートを上書きしないで、_template/my_logstashなどの他のIDを使用して、インデックス作成時に両方のテンプレートが起動され、公式ログスタッシュテンプレートのマッピングとテンプレートのシャード設定を使用するようにします。

+0

明確な説明をありがとう!それが明確でない場合に追加する1つのメモ: ".raw"フィールドが ".keyword"フィールドに変更されました。しかし、予測どおりにすべてが機能しています! –

+0

素晴らしい、嬉しい助けて! – Val

関連する問題