0

前に示したようにインデックスを作成しようとしていますが、常に次のエラーが発生します: Bad request For request 'POST /initIndex' [Invalid Json]

play Framework 2.3.x と scala 2.11 で Elastic4s を使用しています。

import com.sksamuel.elastic4s.{ElasticClient, ElasticsearchClientUri, FrenchLanguageAnalyzer}
import com.sksamuel.elastic4s.ElasticDsl._
import com.sksamuel.elastic4s.mappings.FieldType._
import models.tools.Tool
import org.elasticsearch.action.get.GetResponse
import org.elasticsearch.action.search.SearchResponse

import scala.concurrent.Future

object ToolsDaoImpl {

  private val uri: ElasticsearchClientUri = ElasticsearchClientUri("elasticsearch://localhost:9200")
  private val client = ElasticClient.remote(uri)    

  def createIndex {
    client execute {
      create index name mappings (
        "tool" as (
            "id" typed IntegerType,
            "title" typed StringType analyzer FrenchLanguageAnalyzer,
            "description" typed StringType analyzer FrenchLanguageAnalyzer
          )
        )
    }
  }

  def findById(toolId: Long): Future[GetResponse] = client.execute {
    get id toolId from "tools/tool"
  }

  def findByName(name: String): Future[SearchResponse] = client.execute {
    search in "tools/tool" query name
  }

  def initIndex {
    client.execute {
      index into "tools/tool" doc Tool(id = 1L, title = "Marteau", description = "Peut être utilisé pour differents travaux")
      index into "tools/tool" doc Tool(id = 1L, title = "Perceuse", description = "Placoplatre et béton")
    }
  }

}

case class Tool(id: Long, title: String, city: String, description: String) extends DocumentMap {
  override def map: Map[String, Any] = Map("id" -> id, "title" -> title, "description" -> description)
}

そして、コントローラーから直接呼び出されます。他に何もない

何か案が ?

前もって感謝します。

編集:単純なスカラ アプリ (メイン) でこのコードを試してみましたが、動作します。理由は何ですか?

4

2 に答える 2

2

上記のコードは問題ではなかったので、送信している読み取りまたは JSON に問題があると思います - 期待しているモデルと読み取りに関する詳細を提供してください

于 2015-01-20T15:20:38.173 に答える
1

あなたの例は不完全かもしれませんが、上記のコードから、2 つの開いた中括弧と 1 つの閉じた中括弧があります。

于 2015-01-20T15:59:44.957 に答える