2014-12-22 3 views
3

Я попытался запустить пример кода elastic4s, как следует,elastic4s не выходит

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

object hw extends App { 
    val client = ElasticClient.local 
    client.execute(create index "bands") 
    client.execute { index into "bands/artists" fields "name"->"coldplay" }.await 
    val resp = client.execute { search in "bands/artists" query "coldplay" }.await 
    println(resp) 
    client.close 
} 

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

+0

Виртуальная машина Java не выходит пока все потоки не выйдут. Я не знаком с elastic4s, но вы можете захотеть сделать 'client.shutdown' перед' client.close'? Или запустите его в отладчике и проверьте, какие потоки все еще запущены. – lmm

+0

Я могу подтвердить то же поведение. На самом деле это происходит, даже если вы просто открываете клиент и сразу закрываете его. Закрытие вызова - это всего лишь оболочка вокруг клиента Java, поэтому я не уверен, почему он не заканчивается немедленно. – monkjack

+0

@Imm, который не работает ... –

ответ

2

Попробуйте использовать shutdown. shutdown фактически делегирует prepareNodesShutdown, что является методом ClusterAdminClient и завершает работу узла. shutdown без каких-либо аргументов отключит локальный узел.

EDIT: добавлен код и Javadoc ссылка

Следующая работа сделал для меня, и работал, как ожидается, с elastic4s 1.4.0 (т.е. основной расторгается)

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

object Main extends App { 
    val client = ElasticClient.local 
    client.execute(create index "bands") 
    client.execute { index into "bands/artists" fields "name"->"coldplay" }.await 
    val resp = client.execute { search in "bands/artists" query "coldplay" }.await 
    println(resp) 
    client.close() 
    client.shutdown 
} 
+0

Есть ли способ отключения? Существует javadoc для класса клиента, я не вижу закрытия, только закрываю. http://javadoc.kyubu.de/elasticsearch/v1.4.2/org/elasticsearch/client/Client.html – monkjack

+0

Это не работает. Даже вызов sys.exit (0) в последней строке тоже не работает. Я не знаю почему. –

+0

Ну, я только проверил [источник] (https://github.com/sksamuel/elastic4s/blob/master/src/main/scala/com/sksamuel/elastic4s/Client.scala) для flex4s и shutdown кажется к обертке вокруг 'java.admin.cluster.prepareNodesShutdown' – edi

Смежные вопросы