solrcloud,solrはクラスタ内でインデックスを確立する
3558 ワード
1 zookeeperチャネルによるインデックスの作成
2注意、CDHでは、zookeeperの設定を見ることができ、最大リンク数は60であるため、zookeeperでは一般的に単例を用いる
3スライスに割り当てることができます
インデックスを作成するときは、一つ一つcommitに行かないで、効率を高めるために、一般的に
実はcommit()も効率的ではなく、一般的にソフトコミットで
public static void main(String[] args) throws IOException, SolrServerException {
String zkHost = "node1:2181,node2:2181,node3:2181/solr";
String defaultCollection = "collection1";
CloudSolrServer server = new CloudSolrServer(zkHost);
server.setDefaultCollection(defaultCollection);
for (int i = 0; i < 1000; ++i) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("cat", "book");
doc.addField("id", "book-" + i);
doc.addField("name", "The Legend of Po part " + i);
server.add(doc);
if (i % 100 == 0)
server.commit(); // periodically flush
}
server.commit();
}
2注意、CDHでは、zookeeperの設定を見ることができ、最大リンク数は60であるため、zookeeperでは一般的に単例を用いる
public class myCloudSolrServer {
// solrServer
public static CloudSolrServer solrServer;
//
// public static synchronized CloudSolrServer getSolrServer() {
// if (solrServer == null) {
// try {
// solrServer = new CloudSolrServer(Const.ZK_HOST + "/solr");
// final int zkClientTimeout = 20000; // 20
// final int zkConnectTimeout = 10000; // ( )
//
// solrServer.setDefaultCollection(Const.defaultCollection);
// solrServer.setZkClientTimeout(zkClientTimeout);
// solrServer.setZkConnectTimeout(zkConnectTimeout);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// return solrServer;
// }
//
public static CloudSolrServer getSolrServer() {
if (solrServer == null) {
synchronized (myCloudSolrServer.class) {
if (solrServer == null) {
try {
solrServer = new CloudSolrServer(Const.ZK_HOST + "/solr");
final int zkClientTimeout = 20000; // 20
final int zkConnectTimeout = 10000; // ( )
solrServer.setDefaultCollection(Const.defaultCollection);
solrServer.setZkClientTimeout(zkClientTimeout);
solrServer.setZkConnectTimeout(zkConnectTimeout);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return solrServer;
}
}
3スライスに割り当てることができます
public static void main(String[] args) throws IOException, SolrServerException {
String url= "node1:8983/solr/core_shard1_replica1";
String defaultCollection = "collection1";
HttpSolrServer server = new HttpSolrServer (url);
server.setDefaultCollection(defaultCollection);
for (int i = 0; i < 1000; ++i) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("cat", "book");
doc.addField("id", "book-" + i);
doc.addField("name", "The Legend of Po part " + i);
server.add(doc);
if (i % 100 == 0)
server.commit(); // periodically flush
}
server.commit();
}
インデックスを作成するときは、一つ一つcommitに行かないで、効率を高めるために、一般的に
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
for(){
SolrInputDocument doc = new SolrInputDocument();
docs.add(doc);
}
server.add(docs);
server.commit();
実はcommit()も効率的ではなく、一般的にソフトコミットで