Elasticsearch - 分配碎片

时间:2011-04-13 14:49:40

标签: java elasticsearch sharding

我最近发现了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 个答案:

答案 0 :(得分:4)

启动节点时,需要考虑的一个常见设置是它是否应该保存数据。换句话说,应该为其分配索引和分片。很多时候我们希望客户只是客户端,没有分配给他们[1]。

如果您想将您的客户端设置为非数据客户端(无分片),请尝试将其替换为:

node = nodeBuilder().node();

用这个:

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

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