2014目次テンプレートの設定インデックステンプレートとは今回利用するテンプレートまとめ前回の「Logstashを利用したApacheアクセスログのインポート」の続きです。前回の記事では、Logstashの設定ファイルについて説明しました。今回は「Elasticsearchに設定するインデックステンプレート」について説明します。テンプレートの設定Elasticsearchでは、登録するデータの特性に合わせてMappingを定義する方がデータを効率良く扱うことができる場合があります。この場合、通常ですと、インデックス作成時にMappingを指定します。今回は、インデックス名に「年」を含める形で指定してあります。「年」はLogstashで処理したデータによって決まります。このため、あらかじめMappingを指定してインデックスを作成するのは難しいです。このような場合に便利な機能として、「インデックステンプレート」があります。インデックステンプレートとは実際のテンプレートの説明に入る前に、少しだけ説明を。インデックステンプレートとは、インデックスが作成されるタイミングで自動的に適用される設定をテンプレートとして登録できる機能のことです。実際にテンプレートが適用されるかどうかは、インデックス名で判断されます。}}'_templateがインデックステンプレートを登録するためのエンドポイントです。template_1がこのテンプレートのIDです。削除などについては、このIDを利用します。重要なのは、“template"の設定です。“template"には、このテンプレートが適用されるべきインデックス名を記載します。上記サンプルではte*となっているため、teで始まる名前のインデックスを作成した場合にテンプレートにある設定が適用されます。CCCや第7回Elasticsearch勉強会のKibana4のデモで利用したインデックスのテンプレートは次のものになります。合致するnew_demo_access_log-*を指定しています。}}'settings設定デモ用であり、手元で2台のノードを起動するということもあり、number_of_shardsに2を、number_of_replicasに0を指定してあります。mappings設定インデックスのタイプMappingsの指定は通常、特定のタイプを指定します。今回のデモでは、1種類しかないのですが、タイプ名を特に意識しないために、_default_を使用しました。この場合、任意のタイプに適用されることとなります。タイプを指定してMappingの設定を行う場合は_default_の部分に特定のタイプ名を記入します。...ダイナミックテンプレート次はダイナミックテンプレートです。インデックステンプレートはインデックスの設定をテンプレート化しました。ダイナミックテンプレートはフィールドに対してテンプレートを設定できます。以下のダイナミックテンプレートでは、stringタイプのフィールドのデフォルト設定を変更しています。通常、stringタイプのフィールドはanalyzedとなりますが、not_analyzedに変更してあります。詳しく検索したいフィールドの方が少ないためです。analyzedとnot_analyzedの2種類のフィールドを用意しています。multi_field設定を用いることで、1つのJSONのデータから、異なる形のフィールドを用意することが可能です。今回のテンプレートでは、path、referer、agentにmulti_fieldを指定しました。path.analyzedというフィールドができあがります。実際に検索する場合は、path.analyzed:検索したい文字列という形で検索をすることで、いわゆる部分一致のような検索が可能です。完全一致をしたい場合はpath.no_analyzed:検索したい文字列という指定になります。用途を考えると、requestも指定したほうが良いかもしれません。geoipLogstashでgeoipデータを付与していました。このgeoipのデータをKibana4で利用するために、geoデータとして登録する必要があります。}},上記の設定がgeoデータの指定です。typeにobjectが指定してありますが、これは、geoipのデータがネストしているためです。geoipオブジェクトのうち、緯度経度のデータはlocationに入っているため、こちらに緯度経度関係の設定を指定します。true:該当するgeohashのみでなく、その親にあたるgeohashについてもインデックスするresponse、response_int、bytes最後は、response、response_int、bytesです。responseには、HTTPステータスコードが入ります。response_intというフィールドにも値を入れています。multi_fieldでも可能ですが、ここでは、copy_toを利用しました。copy_toを用いることで、異なるフィールドに値をコピーすることができます。bytesについては、longで扱いたいとういう理由だけです。"integer"}まとめ今回はデモに利用したインデックスてプレートについて説明しました。前回の、Logstashの設定とこのインデックステンプレートを用いることで、Kibanaで解析するデータの準備ができます。実際の操作などについては、また次回の記事で説明しようかと思います。不明な点、誤植などありましたら、コメント欄へお願いします。