2015-02-11 93 views
1

我想用scala elstic4s客戶端將新文檔索引到我的elasticsearch集羣中,但我遇到了類型編譯問題。繼在網絡上找到的文檔和例子中,語法如下:Elastic4s客戶端批量操作錯誤

客戶實例:

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] 

任何人都可以告訴我如何可以轉換e類型使這項工作?謝謝!

+0

什麼是您的「操作」的類型?你可以使用List [com.sksamuel.elastic4s.IndexDefinition] – monkjack 2015-02-11 17:05:32

回答

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 
    } 
}