2015年2月3日 星期二

【Apache Solr】 建立 Collection (Create Collection using SolrJ or RESTful)

【Apache Solr】建立 Collection (Create Collection) 介紹了如何在 SolrCloud 中建立一個 Collection

當然也說明了一些建立 Collection 的一些條件,包括 Shard 的數量以及 Config 須先上傳到 Zookeeper

接下來介紹一下如何用 SolrJ 以及 RESTful 的方式建立一個 Collection

SolrJ 是一個套件能夠讓開發者透過 Java 的方式來操作 Solr,以下是建立 Collection 的片段程式

String zkHosts = "locahost:9983";
String collectionName = "testCollection1";
String confName       = "testCollection1";  //Configuration Name (You must upload to zookeeper first)
int shards            = 3;
CloudSolrServer server = new CloudSolrServer(zkHosts);
CollectionAdminResponse response = CollectionAdminRequest.createCollection(
                                collectionName, shards, confName , server);

if(null != response.getErrorMessages()){
        /* print error here */
 for(Entry error: response.getErrorMessages()){
  result.addErrorMsg(error.getValue());
 }
}
server.shutdown();

CollectionAdminRequest 有很多的重載方法,可以去查它的 API


畢竟建立一個 Collection 有很多參數可以設定,包括 最大的 Shard 數量 或是 route field 等等的

另外你如果不想寫 Java,你也可以透過 HTTP 的 GET 方法請求一段 RESTful 來達到目地

例如以下的 URL 請求效果會跟上面的 SolrJ 範例程式相等

http://localhost:8983/solr/admin/collections?
                                action=CREATE&
                                name=testCollection1&
                                numShards=3&
                                collection.configName=testCollection1

需要注意的是透過 RESTful 的方式不用指定 Zookeeper,但相對的你必須從你的 SolrCloud

中挑選任何一個節點來執行上述的 RESTful 請求

例如你有 host1 ~ host3 三個節點

那麼你對 host1, host2 或是 host3 發出上述的 RESTful (IP記得換掉)效果會是一樣的 



沒有留言:

張貼留言