1

Play 2.3.7 Scala で ElasticSearch を使用しようとしています。エラスティック検索をインストールし、インデックスを追加して、稼働中です (curl を使用してテスト済み)。ただし、elastic4s を再生コントローラー内で動作させるのに苦労しています。

シンプルなリモート URL を使用してクライアントを作成しました

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

次に、クライアントで実行しようとします。

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

これはアクション内で実行されますが、次のエラーが発生します。

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

1 に答える 1

1

これは、次のように ElasticDsl のフル インポートを行っていないことが原因のようです。

import com.sksamuel.elastic4s.ElasticDsl._ 

しかし、代わりに

import com.sksamuel.elastic4s.ElasticDsl

完全なオブジェクトをインポートすると、必要な暗黙オブジェクトを含むコンパニオン オブジェクトが明確に呼び出されます。

フル インポートを行わなかった理由は、elastic の DSL が Anorm の DSL と競合していたため、Elastic コードを別の関数に抽出し、関数定義内でインポートを使用することで、あいまいさが取り除かれ、コードはコンパイルできました。

于 2016-08-16T20:17:06.967 に答える