2016-06-23 5 views
1

私は自分のlocalhostにsolrをインストールしました。Solr 6.0.0 - SolrCloud javaの例

私は標準solrクラウドとzookeeprを埋め込みました。

コレクション:じめ 破片:2 レプリケーション: - これはちょうど500のレコードを処理するには、このくらいの時間がかかっている理由を 2つの

500レコード/時間を処理するために、ドキュメントが115秒、[ローカルホストtetsing]を取りました。 いくつかのmillisecsにこれを改善する方法がある/ nanosecs

注:私はSolrのインスタンスリモートマシン上で同じことをテストしている

、[Javaはコメント内]リモートのSolrにデータのインデックスを持つlocalhostの

私は私のsolr myCloudDataコレクションと単一のzookeeprとアンサンブルを開始しました。

2 Solrのノード、 1アンサンブルの飼育係スタンドアロン

コレクション:myCloudData、 破片:2、 複製:あなたがコミットされている2

Solrのcolud Javaコード

package com.test.solr.basic; 

import java.io.IOException; 
import java.util.concurrent.TimeUnit; 

import org.apache.solr.client.solrj.SolrClient; 
import org.apache.solr.client.solrj.SolrServerException; 
import org.apache.solr.client.solrj.impl.CloudSolrClient; 
import org.apache.solr.client.solrj.impl.HttpSolrClient; 
import org.apache.solr.common.SolrInputDocument; 

public class SolrjPopulatorCloudClient2 { 
    public static void main(String[] args) throws  IOException,SolrServerException {   


    //String zkHosts = "64.101.49.57:2181/solr"; 
    String zkHosts = "localhost:9983"; 
    CloudSolrClient solrCloudClient = new CloudSolrClient(zkHosts, true); 
    //solrCloudClient.setDefaultCollection("myCloudData"); 
    solrCloudClient.setDefaultCollection("gettingstarted"); 
    /* 
    // Thread Safe 
    solrClient = new ConcurrentUpdateSolrClient(urlString, queueSize, threadCount); 
    */ 
    // Depreciated - client 
    //HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr"); 
    long start = System.nanoTime(); 
    for (int i = 0; i < 500; ++i) { 
     SolrInputDocument doc = new SolrInputDocument(); 
     doc.addField("cat", "book"); 
     doc.addField("id", "book-" + i); 
     doc.addField("name", "The Legend of the Hobbit part " + i); 
     solrCloudClient.add(doc); 
     if (i % 100 == 0) 
      System.out.println(" Every 100 records flush it"); 
     solrCloudClient.commit(); // periodically flush 
    } 
    solrCloudClient.commit(); 
    solrCloudClient.close(); 
    long end = System.nanoTime(); 
    long seconds = TimeUnit.NANOSECONDS.toSeconds(end - start); 
    System.out.println(" All records are indexed, took " + seconds + " seconds"); 

} 
} 

答えて

1

新しい文書はすべて必要ではありません。あなたは14秒で私のマシン上で

if (i % 100 == 0) { 
    System.out.println(" Every 100 records flush it"); 
    solrCloudClient.commit(); // periodically flush 
} 

、このインデックスあなたの500件のレコードを読み取るためにif (i % 100 == 0)ブロックを変更する場合には、より高速な多くのことを実行します。 forループからcommit()コールを削除すると、7秒後にインデックスが作成されます。これはあなたの記録は15秒以内にコミットされることを保証し、またあなたのインデックス速度が向上します

solrCloudClient.add(doc, 15000); 

また、あなたはsolrCloudClient.add()コールにcommitWithinMsパラメータを追加することができます。

+0

私を指摘してくれてありがとう。私は2つのSolrのインスタンス、1つの飼い猫のインスタンスを設定することに忙しくて、私はsolrのzookeeper znodeを打ちました。私はコードの深いドライブを見ていない。ありがとう、これは解決されました。 –

関連する問題