Как проверить, правильно ли работает ElasticSearch

Я новичок в ElasticSearch, и у меня возникают проблемы при подключении к ElasticSearch. Пожалуйста, найдите ниже детали:

  1. Плагин hq и плагин head показывают разные результаты:
    Вывод плагина HQ: Вывод плагина HQ
    Вывод плагина Head: Плагин вывода головы

  2. Когда я пытаюсь подключиться из моего кода scala, я получаю следующую ошибку:

    org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
    at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305)
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200)
    at org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106)
    at org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:102)
    at org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:340)
    at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$$anonfun$apply$1.apply(IndexDsl.scala:23)
    at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$$anonfun$apply$1.apply(IndexDsl.scala:23)
    at com.sksamuel.elastic4s.Executable$class.injectFuture(Executable.scala:21)
    at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$.injectFuture(IndexDsl.scala:20)
    at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$.apply(IndexDsl.scala:23)
    at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$.apply(IndexDsl.scala:20)
    at com.sksamuel.elastic4s.ElasticClient.execute(ElasticClient.scala:28)
    

Вот мой код, который я использую для подключения:

val settings = ImmutableSettings.settingsBuilder()
                                .put("cluster.name", "elasticsearch")
                                .build()
val client = ElasticClient.remote(settings, ElasticsearchClientUri("elasticsearch://10.50.xxx.xxx:9300"))
  1. Я также проверил свое соединение и могу успешно подключиться по telnet 10.50.xxx.xxx к портам 9200 и 9300.

  2. Я где-то читал, что проблема может быть с http.cors, поэтому я добавил следующие строки в файл /etc/elasticsearch/elasticsearch.yml на сервере:

    http.cors.allow-origin: "/.*/"
    http.cors.enabled: true
    


    Подскажите пожалуйста, что я делаю не так?

-- Обновление --
Спасибо @ Evaldas Buinauskas, это была проблема с версией, я установил эластичную версию 2.0 и использовал библиотеки и плагины версии 1.7. Я понизил эластичность до версии 1.7, и все заработало!


person vaibhavatul47    schedule 06.11.2015    source источник
comment
Не могли бы вы сказать, какая у вас версия elasticsearch, головного плагина и версии клиента scala? Elasticsearch удалил API _status в версии 2.0, который использовался в головном плагине для определения работоспособности кластера, возможно, ваш клиент Scala тоже использует его. _status был заменен на _recovery.   -  person Evaldas Buinauskas    schedule 06.11.2015
comment
Спасибо, это была проблема с версией, я установил эластичную версию 2.0 и использовал библиотеки и плагины версии 1.7. Понизил эластик до версии 1.7 и все заработало!   -  person vaibhavatul47    schedule 06.11.2015


Ответы (1)


Проблема возникает из-за разных версий Elasticsearch, головного плагина и клиента Scala.

В версии до 2.0 Elasticsearch по-прежнему поддерживал устаревшую конечную точку _status. (устарело в 1.2.0)

Версия 2.0 полностью удалила его и заменила на _recovery.

И голова, и Scala не были обновлены и пытались вызвать сброшенный API.

person Evaldas Buinauskas    schedule 06.11.2015