elastic4s でエラー処理

Scala から Elasticsearch を操作するクライアントライブラリ

Elasticsearch のサイトには、以下の4つが紹介されている

更新具合その他を考えて、elastic4sを使うことにした。

Elastic4s の使い方 → RTFM

基本的な使い方は以下を参照。

エラー処理

ドキュメントだと、エラーが起きた時にどう処理をすれば良いかが書いていない。

例えば、documentを追加するコードは

esClient.execute {
   index into s"index1/type1" fields ("field1" -> "val")
}

みたいに書くけど、エラーが起きたらどうするんだろうと思った。

上の式のシグニチャーをみると Future[IndexResponse] らしい。IndexResponse は Elasticsearch の API で提供されている。ドキュメントはこの辺

ドキュメントに追加できなかった場合は、isCreated メソッドが false を返す。それ以外に、サーバー側でエラーが起きたりとかした場合には例外が投げられる。

ということで、例えば以下のように処理できる。

import com.sksamuel.elastic4s.ElasticDsl._
import org.elasticsearch.action.index.IndexResponse
import org.elasticsearch.transport.RemoteTransportException

val f: Future[Boolean] = esClient.execute {
   index into s"index1/type1" fields ("field1" -> "val")
} map (_.isCreated) recover {
  case e: RemoteTransportException =>
    Logger.error(e.getMessage)
    false
}

この辺はニーズに応じて好きなようにすれば良いかなと。

その他

コードをみたけど、結構ちゃんと書かれていた(と個人的には思った)。

まとめ?

Elasticsearch 便利。elastic4s も便利。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です