1

scala elstic4s クライアントを使用して新しいドキュメントを Elasticsearch クラスターにインデックス付けしようとしていますが、型にコンパイルの問題があります。ドキュメントと Web で見つかった例に従うと、構文は次のようになります。

クライアントのインスタンス化:

val settings = ImmutableSettings.settingsBuilder().put("cluster.name", Configuration.elasticsearchClusterName).build()    
val uri = ElasticsearchClientUri("elasticsearch://" + Configuration.elasticsearchUri)
val client = ElasticClient.remote(settings, uri)

私はそれを次のように書こうとしています:

def writeToElasticsearch(bulkList: List[EventMessage]) {
   val ops = for (message <- bulkList) yield index into indexDcp ttl 7.days.toMillis doc StringDocumentSource(message.toJSon()) 
   client.execute(bulk(ops: _*)).await
 }    

一括操作で次のようなコンパイル エラーが発生します。

Multiple markers at this line
- type mismatch; found : List[com.sksamuel.elastic4s.IndexDefinition] required: 
 Seq[Int]

型を変換してこれを機能させる方法を誰か教えてもらえますか? ありがとうございました!

4

1 に答える 1

0

エラーが発生する理由はわかりません。おそらく、コードサンプルから見逃したビットに何かが含まれている可能性がありますが、このバージョンのコードは問題なくコンパイルされます。

object Test extends App {

  val client = ElasticClient.local
  val indexDcp = "myindex/mytype"

  import scala.concurrent.duration._
  import ElasticDsl._

  def writeToElasticsearch(bulkList: List[EventMessage]) {
    val ops = for (message <- bulkList) yield { index into indexDcp ttl 7.days.toMillis doc StringDocumentSource(message.toJSon()) }
    client.execute(bulk(ops: _*)).await
  }

  trait EventMessage {
    def toJSon(): String
  }
}
于 2015-02-11T17:13:32.793 に答える