よしだのブログ

サブタイトルはありません。

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 を使ってサーバーに投げています。

gist5169a413a80a201faad0