CodeLibsでは、Elasticsearch Repository SSHプラグインを提供しています。Elasticsearchの標準ではHTTPとローカルファイルシステムでスナップショットを保存できますが、このプラグインを利用することでElasticsearchのクラスタからSSHで接続可能なサーバに対して接続して、SSH(実際にはSFTP)でファイルを転送することができます。スナップショットを置くサーバが普通にマウントとかできれば、ローカルファイルシステムで利用すれば良いですが、状況によってはそうはできない場合もあるかと。このプラグインを利用すると、リポジトリの設定がssh用の設定になるだけで、スナップショットとリストアの操作自体は通常と変わりません。という感じなので、必要に応じてご利用ください。
カテゴリー: elasticsearch
DynaRankプラグインとMinHashプラグイン
CodeLibsで提供している、検索結果の上位N件を動的に並び替えるDynaRankプラグインとドキュメント内の指定されたフィールドのMinHash値を計算するMinHashプラグインですが、ドキュメントを書かなければと思いつつ、時間が経ってしまっていました…。
そんな感じで、時間が過ぎてしまっていたのですが、@takezoenさんによりこちらに利用方法を書いていただきました。(すばらしいー)Elasticsearchを全文検索的に利用していて、EC系だとありがちな気もしますが、似たような検索結果が出て困るとか言うようなときにその組み合わせとかで試してみるといい感じでばらまいてくれるので良いかもしれません。
DynaRank自体は別にMinHashに依存しているわけではなく、汎用的な感じで、自由に検索結果を並び替える目的で利用することができます。
意図的に上位N件を並び替えたいとかいうときに便利です。
こことかここを見ると、ebayでもdiversityに取り組んでいるみたいだけど、そんな感じのこともDynaRankで実装できるといいのにな〜と思う今日このごろです。
Dictionaryプラグイン
Elasticsearch Dictionaryプラグインを作りました。Kuromojiのユーザー辞書やSynonymTokenFilterのシノニム辞書を管理するような機能が持てればなっと思っています。今後、必要な機能を追加していくかもしれませんが現時点では、辞書ファイルで課題になるのが、インデックスをスナップショットとリストアを行うときに辞書ファイルが保存されないので、辞書ファイルを持つインデックスファイルをスナップショットをとって、別環境に無邪気にリストアしても辞書ファイルがないのでインデックスが開かず、という状況です。しかも、現状のElasticsearchだとクラスタイベントをうまく処理しないので、おかしな状態になります。というわけで、このプラグインがインデックスのスナップショットを取ると同時に、インデックス内に含まれる辞書ファイル(.txtという値をもつもの)がインデックス設定にあればそれを辞書用のスナップショットを取ります(つまり、〜.dictionary〜という感じの名前のスナップショットが作成される)。というわけで、リストアするときには、普通にリストアを実施すると、辞書用スナップショット(〜.dictionary〜の名前のスナップショット)が存在するかどうかチェックして、存在すれば、先に辞書を復元する感じです。これで、スナップショット用リポジトリをリストア先にもきちんと設定されていれば、辞書も安心して扱える感じです。
そんな感じですが、Kuromojiなどで辞書ファイルを持っていたりする場合とかで利用してもらえれば、辞書も安心して復元できると思います。