Elasticsearch River Web

ElasticsearchでfluentdとKibanaと組み合わせてログ集計するパターンはありがちかと思うけど、ウェブのコンテンツを定期的に収集するプラグイン(River)がほしいなっと思い、Elasticsearch River Webを作り始めました。まぁ、簡単にElasticsearch River Webを説明すると、Webクローラーです。内部的にはS2Robotを利用しているので、Fessと同じ感じでクロールすることができます。とはいえ、Fessは全文検索システムを目指していますが、このRiver Webはコンテンツ収集に焦点を当ててた感じになっています。クロールはFessもRiver Webも同じですが、River WebはWebスクレイピングをして、Elasticsearch内にドキュメントを生成していきます。つまり、CSSクエリーで特定のHTMLの場所を指定して、その得られた値をドキュメントのプロパティ(Solrでいうと、1つのフィールド)に格納していきます。なので、集めたいコンテンツの情報だけをインデックス化することができ、Kibanaとかで結果を分析用にいい感じで表示するとかができます。という感じで、River Webはウェブコンテンツの収集・解析などの用途で利用していければな、と考えています。

Maven Archetype for Elasticsearch Plugin

Elasticsearchのプラグインを作るときにMavenのArchetypeが見つからなかったので、作ってみました。ここにあります。使い方もMavenのarchetype:generateゴールを実行するだけでプロジェクトができます。デフォルトでは、サービス、River、Restの3つの機能が含まれています。この辺もプロパティで出し分けたほうが良いような気もしますが、とりあえず、全部入りで生成されるのでいらないものを削除してください。CodeLibsのMavenリポジトリを使っていますが、そろそろセントラルに置くことも考えた方が良いのかなっとも思い始めています。という感じですが、Elasticsearchのプラグインを作る際にはご利用くださいませ。

elasticsearch-mocksolrpluginの更新

ここで書いたようにelasticsearch-mocksolrpluginをforkしていたのだけど、先週末にいろいろとリファクタリングをしてここのdevelopブランチに置いてあります。もう少ししたら、mocksolrpluginっていう名前もどうかなという気もするので、普通にelasticsearch-solrみたいな名前にしてリリース物を作っておこうかと考え中。mocksolrpluginのままだと、元のやつよりだいぶ進化しているのもあって名前が紛らわしくなってしまうし。という感じで、もう少し地道にブラッシュアップしていこうかなっと。