was ich erreichen möchte sind: Erstellen Sie eine API, die in ElasticSearch suchen. Meine Programmiersprache ist Scala.Fehler konnte Wert nicht implizieren ToResponseMarshaller [SearchResponse]
//myRoute.scala
val pencarianES =
{
post
{
path("cariES")
{
parameters("xQuery", "xNilai")
{
(yQuery, yNilai) =>
val PR = new ProsesRekomendasi
respondWithMediaType(MediaTypes.`application/json`)
{
complete
{
PR.ambilDariES(yQuery, yNilai)
}
}
}
}
}
}
//prosesRekomendasi.scala
class ProsesRekomendasi
{
val ESM = new ESManager
val CLT = ESM.client
def ambilDariES(pQuery:String, pNilai:String) =
{
CLT.prepareSearch("app_lr_portal_01")
.setTypes("lr01")
.setQuery(QueryBuilders.termQuery(s"$pQuery",s"$pNilai"))
.execute()
.actionGet()
}
}
Fehler sind:
could not find implicit value for parameter marshaller:
spray.httpx.marshalling.ToResponseMarshaller[org.eleasticsearch.action.search.SearchResponse]
PR.ambilDariES(yQuery, yNilai)
i wurde bei Google suchen, und gründete DefaultMarshallers missing with scala and spray-routing
und dann, im folgen Sie den Anweisungen:
def ambilDariES(pQuery:String, pNilai:String)(implicit ec:ExecutionContext) =
{
CLT.prepareSearch("app_lr_portal_01")
.setTypes("lr01")
.setQuery(QueryBuilders.termQuery(s"$pQuery",s"$pNilai"))
.execute()
.actionGet()
}
schließlich bekomme ich einen anderen Fehler, die sind:
eine Idee, wie er damit umgehen? danke für Ihre Hilfe!
Erstens würde ich Ihnen empfehlen, dass Sie Englisch für Ihre Codebeispiele verwenden, da es die kognitive Belastung einer Person verringert, die Ihren Code liest. Für den ersten Fehler - Spray weiß nicht, wie man SearchResponse marshallt, müssen Sie einen Marshaller explizit zur Verfügung stellen, wenn ElasticSearch API einen nicht zur Verfügung stellt. Diese Dokumentation sollte Ihnen eine Vorstellung von den nächsten Schritten geben: http://spray.io/documentation/1.2.2/spray-httpx/marshalling/ Für Ihren letzten Fehler - haben Sie versucht, das zu tun, was Sie von ihm verlangen? – Tim
ok, verzeih mir @Tim. Ja, habe ich. hehe – SunBright
herr @Tim, ich hatte ähnliches Problem wie SunBright. irgendeine Idee? –