Elasticsearch 用 インデックス作成処理を java で書いた。
Java の API を使って勢いで書いてみたら、結構簡単でした。まあ、基本は JSON にして、PUT するだけですしね。
社内で使っている、クローラのフレームワークに沿って書いたのでそのままでは使えないと思いますが、ちょっと改変すれば行けると思います。
依存している jar
elasticsearch と lucene -core は lib 以下に置いてあるものを使います。
- elasticsearch-1.3.2.jar
- lucene-core-4.9.0.jar
- jackson-databind-2.4.2.jar
- jackson-core-2.4.2.jar
- jackson-annotations-2.4.2.jar
解説みたいなもの
- write メソッドの引数 List
items ですが、MapをExtendした、ただの Bean のリストです。Map や、カスタムしたBean にしてもいいと思います。階層化したデータの場合は、カスタムですかね。 - jackson つかって、json に変換してます。Map なので、完全にオートです。
- Solr と違って、id となる値は明示的にメソッドに渡してあげる必要があります。自動生成の機能もあるので、log とかを投げるだけなら渡さなくてもいいと思います。
- インデックスの名前とタイプを渡すので、setter 用意して DI とかしてあげると Cool ですね。
- 一個ずつ投げてもいいのですが、まとめてやったほうが一般に速いので、BulkRequest を使ってサーバーに投げています。