もともと、Elasticsearch River Webの中にQuartzを含めて、クロールの実行時間とか調整していたのだけど、Quartzを使って、指定時間に何かする系の処理は便利で他でも使う必要があったので、その機能だけ切り出してプラグインにしたのが、このElasticsearch Quartzプラグインです。それを使ってやりたいこととしては通知系の処理をするプラグインが必要かな、という感じです。なので、近いうちにElasticsearch Notificationプラグインを作ろうと考えています。まぁ、その前に、QuartzプラグインをMaven Centralにリリースするのが先ですが…。これも近いうちにやります。
投稿者: shinsuke
Elasticsearch Authプラグイン
Elasticsearchを使うと認証とかどうしようかなっとか思ったりすることもあるかもしれませんが、それに対応するための作ったのがElasticsearch Authプラグインになります。まぁ、Elasticsearchへのアクセスをプロキシする途中経路の何かに認証を任せてしまっても良いのかもしれないけど、Elasticsearch単体でも認証できればいいんじゃないかな、と思って作っている感じです。ユーザー情報は拡張可能な実装にしていますが、デフォルトでは指定されたインデックスからユーザー情報を取得とかする感じです。実装すれば、ファイルに保存とか、LDAPとかからもユーザー情報を取得することができると思います。それらのユーザー情報を用いて、Elasticsearch Authプラグインでログインしてトークンを取得すれば、ElasticsearchにアクセスしたときにElasticsearch Authプラグインがフィルタして、トークンを用いてアクセス可能かを判断します。権限がなければ、Forbiddenが返却されます。アクセスできるかどうかのパス指定の情報もインデックスに保存してあり、HTTPのメソッドとの組み合わせで制御することができます。という感じで、Elasticsearch単体でいろいろとやっていこうとする人には便利かと思います。
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はウェブコンテンツの収集・解析などの用途で利用していければな、と考えています。