Elastic4s java.lang.NoSuchMethodError

Я пытаюсь подключиться к кластеру ES через Elastic4s. Я использую пример, приведенный в репозитории github:

import com.sksamuel.elastic4s.ElasticClient
import com.sksamuel.elastic4s.ElasticDsl._

object Test extends App {

  val client = ElasticClient.transport(ElasticsearchClientUri(host, port))

  // await is a helper method to make this operation synchronous instead of async
  // You would normally avoid doing this in a real program as it will block your thread
  client.execute { index into "bands" / "artists" fields "name"->"coldplay" }.await

  // we need to wait until the index operation has been flushed by the server.
  // this is an important point - when the index future completes, that doesn't mean that the doc
  // is necessarily searchable. It simply means the server has processed your request and the doc is
  // queued to be flushed to the indexes. Elasticsearch is eventually consistent.
  // For this demo, we'll simply wait for 2 seconds (default refresh interval is 1 second).
  Thread.sleep(2000)

  // now we can search for the document we indexed earlier
  val resp = client.execute { search in "bands" / "artists" query "coldplay" }.await
  println(resp)

}

Клиент принимает соединения на 9434, как описано здесь - https://www.elastic.co/guide/en/cloud/current/security.html

Кроме того, он ищет или добавляет - в зависимости от выбранного способа строительства - elasticsearch:\\ на хост и порт.

После запуска даже строки, которая инициализирует клиента, я получаю Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

Я явно что-то недопонимаю. Пожалуйста, дайте мне знать, что я делаю неправильно.

РЕДАКТИРОВАТЬ:

В качестве проверки у меня есть клиент.Net для ES, который использует обычное http-соединение.

var node = new Uri(url);
var connectionSettings = new ConnectionSettings(node);
connectionSettings.BasicAuthentication(settings.username,settings.password);
client = new ElasticClient(connectionSettings);

Я стремлюсь достичь того же.

1 ответ

Решение

Может показаться, что в ваших зависимостях отсутствует библиотека scala. Таким образом, в зависимости от того, какую версию Scala вы используете, вам нужно, чтобы ваши deps соответствовали этому. Какой инструмент сборки вы используете?

SBT (вам не нужно делать это, SBT должен делать это автоматически в зависимости от вашего scalaVersion)

"org.scala-lang" % "scala-library" % "YOUR SCALA VERSION"

специалист

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.12.1</version>
</dependency>

SBT также имеет некоторую информацию здесь, http://www.scala-sbt.org/1.0/docs/Configuring-Scala.html

Другие вопросы по тегам