前回の記事のElasticSearchの設定に関する補足。

アナライザが効いているかどうかの確認方法

形態素解析とユーザ辞書が効いているかどうかを確認します。

姓名で分割されず「白石麻衣」で返ってくれば、ユーザ辞書が効いてます。

日本語の形態素解析がうまくいっているかどうかは以下で確認可能です。

形態素解析がうまくいっていると、「白石」と「美帆」が返ってきます。

インデックステンプレートについて

インデックスが作成されるときに適用されるマッピングのテンプレートになります。今回の場合、fluentdから動的にindexを作っていくので、インデックステンプレートを定義して項目ごとのアナライザや日付フォーマットの設定を行います。

インデックステンプレートの検証

適当なドキュメントを作成します。以下のコマンド前にはlogstash-xxxxのインデックスは作成されていない前提です。

正常に作成できればdate型に関しては問題ないことになります。アナライザは上記に書いた方法で検証します。stringのanalyzed設定に関しては実際のマッピングを以下のコマンドで確認すればOKです。

date型で想定通りに検索できるかどうかは以下で確認します。

既存のインデックスのsettingsを変更する方法

以下のコマンドで既存のインデックスのsettings(アナライザなど)を変更することができます。

参考URL:Update Indices Settings

ドキュメントのトークンを見る方法

{elastic search path}/config/elasticsearch.ymlで以下の記述を追加します。

あとは以下のコマンドでドキュメントのトークンを確認できます。

ElasticSearch用のfluentd設定

utc_indexをfalseにするとマシンのローカルタイムでインデックスが作成されます(インデックスのYYYYMMDDのところ)。@timestampフィールドはデフォルトでElasticSearchにデータを流し込むタイミングになりますが、ツイッターの場合はcreated_atを利用した方がイベント発生時刻としては正確です。その場合はtime_keyにcreated_atを設定します。ただし、そのままだとインデックスで利用するタイムスタンプとして解釈できなくなるので、time_key_formatを適切に設定する必要があります。