ほわいとぼーど

ぷろぐらまのメモ帳

Elasticsearchのlogstash形式indexについて

indexはElasticsearchにおけるスキーマみたいなものなわけですが、
logstash形式(LogStashはjavaのログimport機構?)にした場合、
indexはimportした日毎に作成されます。
例えば今日から5日間Fluentdで取得し続けた場合、
 logstash-2013.09.11
 logstash-2013.09.12
 logstash-2013.09.13
 logstash-2013.09.14
 logstash-2013.09.15
みたいにindexが1日毎に分かれて作成されます。これの利点は
・データ検索する時に日付で範囲指定すると対象データも絞れるので検索が早くなる
・ある程度経過したデータを日付で管理して削除したりできる。つまりログローテート機構
偶然、Rebuild.fmで聞いてスゲーと思いました。
データ管理まで考えられてるなんで至れり尽くせりですね。
前述のmapping templatesはlogstash形式で作られるindexに対して
mappingを自動的に適用できるようにしたかったので調べてみたものです。


当然、Kibanaもこのlogstash形式の利点を生かせるように作られています。
Kibana3でのindexの設定はダッシュボードのタイトルの右の丸っぽいのを
クリックして出てくる画面で設定できます。

f:id:a3no:20130911231051j:plain

デフォルトでlogstash形式が選択されていて連動しそうな感じです。(まだ試してません)
もしかしたら@timestampとしか連動しないかも、とちょっと疑ってます。(まだ試してません)
デフォルトでlogstash形式が選択されていて日付範囲選択と連動します。

過去ログをimportするとかで日付と関係ないケースも考えられますが、
そういう場合などに自分で好きなindex名をつけることも当然可能です。
その場合は、プルダウンでnoneを選んでindex patternの所にindex名を直接入れるか、
あるいは「_all」を設定すると全てのindexを対象にしてくれます。


indexをlogstash形式にするにはFluentdの場合、
「logstash_format true」を設定するだけです。
この場合、index_nameに名前をつけていたとしても無視されます。

読み返してて「まだ試してません」って酷いなと思いましたが、
多分こういうことだから誰か試してね余裕出来たらすぐ試せるはず、、、
(追記)試してみました。