Scala client and code generator for Elasticsearch
Add a following dependency into your build.sbt
at first.
libraryDependencies += "jp.co.bizreach" %% "elasticsearch4s" % "0.0.7"
You can access Elasticsearch via REST API as following:
case class Tweet(name: String, message: String)
import jp.co.bizreach.elasticsearch4s._
ESClient.using("http://localhost:9200"){ client =>
val config = ESConfig("twitter", "tweet")
// Insert
client.insert(config, Tweet("takezoe", "Hello World!!"))
client.insertJson(config, """{name: "takezoe", message: "Hello World!!"}""")
// Update
client.update(config, "1", Tweet("takezoe", "Hello Scala!!"))
client.updateJson(config, "1", """{name: "takezoe", message: "Hello World!!"}""")
// Delete
client.delete(config, "1")
// Find one document
val tweet: Option[(String, Tweet)] = client.find[Tweet](config){ seacher =>
seacher.setQuery(QueryBuilders.termQuery("_id", "1"))
}
// Search documents
val list: List[ESSearchResult] = client.list[Tweet](config){ seacher =>
seacher.setQuery(QueryBuilders.termQuery("name", "takezoe"))
}
}
elasticsearch4s is a wrapper of Elasticsearch Java API. Therefore see its document to know details, especially how to build query.
elasticsearch4s-gen can generate source code from Elasticsearch schema json file.
At first, add following setting into project/plugins.sbt
:
addSbtPlugin("jp.co.bizreach" % "elasticsearch4s-gen" % "0.0.4")
Then put Elasticsearch schema json file as PROJECT_ROOT/schema.json
and execute sbt es-gen
. Source code will be generated into src/main/scala/models
.
You can configure generation settings in PROJECT_ROOT/es-gen.conf
. See ESCodegenConfig.scala to know configuration details.