in app/controllers/HostInfoController.scala [69:95]
def simpleStringSearch(q:Option[String],start:Option[Int],length:Option[Int]) = Action.async {
val cli = esClientMgr.getClient()
val actualStart=start.getOrElse(0)
val actualLength=length.getOrElse(50)
q match {
case Some(searchTerms) =>
val searchString = s"*$searchTerms*"
val responseFuture = cli.execute {
search(indexName) query searchString from actualStart size actualLength
}
responseFuture.map({
case Left(failure) =>
InternalServerError(Json.obj("status" -> "error", "detail" -> failure.toString))
case Right(results) =>
val resultList = results.result.to[HostInfo] //using the HostInfoHitReader trait
Ok(ObjectListResponse[IndexedSeq[HostInfo]]("ok","entry",resultList,results.result.totalHits.toInt).asJson)
}).recover({
case ex:Throwable=>
logger.error("Could not process result from elastic: ", ex)
InternalServerError(GenericErrorResponse("error",ex.toString).asJson)
})
case None => Future(BadRequest(GenericErrorResponse("error", "you must specify a query string with ?q={string}").asJson))
}
}