Elastic4s / PlayFramework - 找不到参数可执行文件的隐式值

Elastic4s / PlayFramework - could not find implicit value for parameter executable

我正在尝试将 ElasticSearch 与 Play 2.3.7 Scala 结合使用。我已经安装了 elastic search,添加了一个索引,并将其设置为 运行(使用 curl 进行了测试)。但是,我正在努力让 elastic4s 在播放控制器中工作。

我使用一个简单的远程工具创建了客户端url

val client = ElasticClient.remote("localhost", 9300)    

然后我尝试在客户端执行。

client.execute {
    ElasticDsl.index.into("test/test").id(id).fields (
                    "title" -> title,
                    "uid" -> uid
    )
}

这是在 Action 内部执行的,但出现以下错误。

could not find implicit value for parameter executable: com.sksamuel.elastic4s.Executable[com.sksamuel.elastic4s.IndexDefinition,R,Q]

这似乎是因为我没有按如下方式完全导入 ElasticDsl

import com.sksamuel.elastic4s.ElasticDsl._ 

而是做

import com.sksamuel.elastic4s.ElasticDsl

导入完整对象时,它清楚地调用了伴随对象,包括所需的隐式。

没有完全导入的原因是,elastic 的 DSL 与 Anorm 的 DSL 冲突,所以通过将 Elastic 代码提取到一个单独的函数,并在函数定义中使用导入,消除了歧义,代码能够编译。