Elasticsearch - Назначение осколков - PullRequest
9 голосов
/ 13 апреля 2011

Я недавно обнаружил Elasticsearch и решил поиграть.К сожалению, у меня возникают проблемы с добавлением индексов.

Код, используемый для добавления индекса, выглядит следующим образом и запускается каждый раз при попытке добавления нового индекса:

 public void index ( String index, String type, String id, String json ){
     Node node = null;
     try{
         node = nodeBuilder().node();
         Client client = node.client();
         IndexResponse response = client.prepareIndex( index, type, id )
         .setSource( json )
         .execute()
         .actionGet();
     }
     catch ( Exception e ){
         Logger.error( e, " Error indexing JSON file: " + json );
     } 
     finally {
         if( node != null)
             node.close();
     }
 }

Индексы не отображаютсябудет добавлен, и мой Cluster helath в настоящее время красный (так как один из осколков красный), но я не знаю, как решить эту проблему.Я получаю подтверждение, что мой индекс добавляется каждый раз, но он не отображается при поиске или в es-admin.

Вся помощь или идеи очень ценятся.

1 Ответ

4 голосов
/ 13 мая 2011

При запуске узла одной из общих настроек, которые следует учитывать, является то, должен ли он содержать данные или нет.Другими словами, должны ли индексы и осколки быть выделены для него.Много раз мы хотели бы, чтобы клиенты были просто клиентами, без выделения им сегментов [1].

Если вы хотите настроить свой клиент как клиент без данных (без сегментов), попробуйте настроитьэто так, заменив это:

node = nodeBuilder().node();

на это:

node = nodeBuilder().client(true).node();

[1] http://www.elasticsearch.org/guide/reference/java-api/client.html

...