1、如何備份solr集群的數據到Linux本地?
一般對於數據量抄在千萬級一下,單機版的solr足以應付日常查詢。相對於solr集群不同,單機版的solr一旦伺服器出現問題,不僅數據丟失還回造成查詢應用崩潰,所以建立主從配置進行數據備份或者備用伺服器還是比較重要的。
搭建好兩個solr服務,一個在window上運行作為從伺服器,用於備份數據,一個主伺服器運行在linux上,solr單機版搭建(6.4.2)參照linux搭建solr6.4.2。
solr用於備份是利用了replication handler,如果沒有從伺服器,主伺服器直接進行備份可以將數據在主伺服器本機做一次備份,可以使用http執行或者curl方法執行,下面是直接在地址欄執行:
2、solr部署在weblogic上,項目中做增刪改查,每次都要重啟solr才行,不報錯,在本地好的,伺服器上就不行了
看下配置文件是否出問題了
3、什麼樣的網站需要solrcloud嗎
現在我們來剖析下這樣一個簡單的集群構建的基本流程:
先從第一台solr伺服器說起:
1) 它首先啟動一個嵌入式的Zookeeper伺服器,作為集群狀態信息的管理者,
2) 將自己這個節點注冊到/node_states/目錄下
3) 同時將自己注冊到/live_nodes/目錄下
4)創建/overseer_elect/leader,為後續Overseer節點的選舉做准備,新建一個Overseer,
5) 更新/clusterstate.json目錄下json格式的集群狀態信息
6) 本機從Zookeeper中更新集群狀態信息,維持與Zookeeper上的集群信息一致
7)上傳本地配置文件到Zookeeper中,供集群中其他solr節點使用
8) 啟動本地的Solr伺服器,
9) Solr啟動完成後,Overseer會得知shard中有第一個節點進來,更新shard狀態信息,並將本機所在節點設置為shard1的leader節點,並向整個集群發布最新的集群狀態信息。
10)本機從Zookeeper中再次更新集群狀態信息,第一台solr伺服器啟動完畢。
然後來看第二台solr伺服器的啟動過程:
1) 本機連接到集群所在的Zookeeper,
2) 將自己這個節點注冊到/node_states/目錄下
3) 同時將自己注冊到/live_nodes/目錄下
4) 本機從Zookeeper中更新集群狀態信息,維持與Zookeeper上的集群信息一致
5) 從集群中保存的配置文件載入Solr所需要的配置信息
6) 啟動本地solr伺服器,
7) solr啟動完成後,將本節點注冊為集群中的shard,並將本機設置為shard2的Leader節點,
8) 本機從Zookeeper中再次更新集群狀態信息,第二台solr伺服器啟動完畢。
示例2,包含2個shard的集群,每個shard中有replica節點
4、linux伺服器上solr怎麼更新資料庫數據
全部實時更新耗資源,敏感表實時更新,非敏感數據定時更新就行。寫個SQL腳本,放在linux伺服器定時執行,開AB資料庫對linux伺服器的增、改、查許可權。
5、怎麼在Eclipse中將文件傳給Solr伺服器
用tortiseSVN登陸SVN,右鍵單擊選擇create folder可以創建文件件,然後將項目的文件夾傳上去;或者右鍵單擊選擇 add folder 把項目的文件夾傳上去。如果在eclipse下需要安裝一個SVN的插件,才能checkout/in文件或工程項目。
6、如何向solr伺服器提交大日誌文件
public static void main(String[] args) {
try {
//Solr cell can also index MS file (2003 version and 2007 version) types.
String fileName = "c:/Sample.pdf";
//this will be unique Id used by Solr to index the file contents.
String solrId = "Sample.pdf";
indexFilesSolrCell(fileName, solrId);
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
/**
* Method to index all types of files into Solr.
* @ fileName
* @param solrId
* @throws IOException
* @throws SolrServerException
*/
public static void indexFilesSolrCell(String fileName, String solrId)
throws IOException, SolrServerException {
String urlString = "http://localhost:8983/solr";
SolrServer solr = new CommonsHttpSolrServer(urlString);
ContentStreamUpdateRequest up
= new ContentStreamUpdateRequest("/update/extract");
up.addFile(new File(fileName));
up.setParam("literal.id", solrId);
up.setParam("uprefix", "attr_");
up.setParam("fmap.content", "attr_content");
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
solr.request(up);
QueryResponse rsp = solr.query(new SolrQuery("*:*"));
System.out.println(rsp);
}
7、為什麼要使用solrcloud
現在我們來剖析下這樣一個簡單的集群構建的基本流程:
先從第一台solr伺服器說起:
1) 它首先啟動一個嵌入式的Zookeeper伺服器,作為集群狀態信息的管理者,
2) 將自己這個節點注冊到/node_states/目錄下
3) 同時將自己注冊到/live_nodes/目錄下
4)創建/overseer_elect/leader,為後續Overseer節點的選舉做准備,新建一個Overseer,
5) 更新/clusterstate.json目錄下json格式的集群狀態信息
6) 本機從Zookeeper中更新集群狀態信息,維持與Zookeeper上的集群信息一致
7)上傳本地配置文件到Zookeeper中,供集群中其他solr節點使用
8) 啟動本地的Solr伺服器,
9) Solr啟動完成後,Overseer會得知shard中有第一個節點進來,更新shard狀態信息,並將本機所在節點設置為shard1的leader節點,並向整個集群發布最新的集群狀態信息。
10)本機從Zookeeper中再次更新集群狀態信息,第一台solr伺服器啟動完畢。
然後來看第二台solr伺服器的啟動過程:
1) 本機連接到集群所在的Zookeeper,
2) 將自己這個節點注冊到/node_states/目錄下
3) 同時將自己注冊到/live_nodes/目錄下
4) 本機從Zookeeper中更新集群狀態信息,維持與Zookeeper上的集群信息一致
5) 從集群中保存的配置文件載入Solr所需要的配置信息
6) 啟動本地solr伺服器,
7) solr啟動完成後,將本節點注冊為集群中的shard,並將本機設置為shard2的Leader節點,
8) 本機從Zookeeper中再次更新集群狀態信息,第二台solr伺服器啟動完畢。
示例2,包含2個shard的集群,每個shard中有replica節點
8、如何向solr伺服器提交大日誌文件
java代碼041424344public static void main(String[] args) { try { //Solr cell can also index MS file (2003 version and 2007 version) types. String fileName = "c:/Sample.pdf"; //this will be unique Id used by Solr to index the file contents. String solrId = "Sample.pdf"; indexFilesSolrCell(fileName, solrId); } catch (Exception ex) { System.out.println(ex.toString()); } } /** * Method to index all types of files into Solr. * @param fileName * @param solrId * @throws IOException * @throws SolrServerException */ public static void indexFilesSolrCell(String fileName, String solrId) throws IOException, SolrServerException { String urlString = "localhost:8983/solr"; SolrServer solr = new CommonsHttpSolrServer(urlString); ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract"); up.addFile(new File(fileName)); up.setParam("literal.id", solrId); up.setParam("uprefix", "attr_"); up.setParam("fmap.content", "attr_content"); up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true); solr.request(up); QueryResponse rsp = solr.query(new SolrQuery("*:*")); System.out.println(rsp); }
9、solrcloud怎樣刪除配置文件
現在我們來剖析下這樣一個簡單的集群構建的基本流程:
先從第一台solr伺服器說起:
1) 它首先啟動一個嵌入式的Zookeeper伺服器,作為集群狀態信息的管理者,
2) 將自己這個節點注冊到/node_states/目錄下
3) 同時將自己注冊到/live_nodes/目錄下
4)創建/overseer_elect/leader,為後續Overseer節點的選舉做准備,新建一個Overseer,
5) 更新/clusterstate.json目錄下json格式的集群狀態信息
6) 本機從Zookeeper中更新集群狀態信息,維持與Zookeeper上的集群信息一致
7)上傳本地配置文件到Zookeeper中,供集群中其他solr節點使用
8) 啟動本地的Solr伺服器,
9) Solr啟動完成後,Overseer會得知shard中有第一個節點進來,更新shard狀態信息,並將本機所在節點設置為shard1的leader節點,並向整個集群發布最新的集群狀態信息。
10)本機從Zookeeper中再次更新集群狀態信息,第一台solr伺服器啟動完畢。
然後來看第二台solr伺服器的啟動過程:
1) 本機連接到集群所在的Zookeeper,
2) 將自己這個節點注冊到/node_states/目錄下
3) 同時將自己注冊到/live_nodes/目錄下
4) 本機從Zookeeper中更新集群狀態信息,維持與Zookeeper上的集群信息一致
5) 從集群中保存的配置文件載入Solr所需要的配置信息
6) 啟動本地solr伺服器,
7) solr啟動完成後,將本節點注冊為集群中的shard,並將本機設置為shard2的Leader節點,
8) 本機從Zookeeper中再次更新集群狀態信息,第二台solr伺服器啟動完畢。
示例2,包含2個shard的集群,每個shard中有replica節點
10、solr5.2.1怎麼得到SolrServer實例,求各位大神指點迷津
SolrServer實例化類型有httpClient,和本地化,如果Solr伺服器不在本地就用httpClient,在本地就用EmbeddedSolrServer
SolrServer可以操作索引,包括更新刪除查詢等操作
以下是httpClient實例化方式,需要tomcat運行Solr服務
1、ConcurrentUpdateSolrServer實例化SolrServer,該類實例化多用於更新刪除索引操作
ConcurrentUpdateSolrServer(String solrServerUrl, int queueSize, int threadCount)
solrServerUrl是Solr伺服器的地址,
queueSize緩沖區大小
threadCount 後台線程數<br><br>
2、HttpSolrServer 實例化SolrServer,該類實例化多用於查詢操作
HttpSolrServer(String baseURL)
baseURL是Solr的伺服器地址
3、LBHttpSolrServer實例化SolrServer,用於有多個Solr伺服器,負載均衡
LBHttpSolrServer(String... solrServerUrls)
solrServerUrls是多個Solr的伺服器地址,用,號分隔
以下是本地實例化,即項目包含Solr服務,不需要tomcat運行Solr服務
EmbeddedSolrServer
private static CoreContainer.Initializer initializer = null;
private static CoreContainer coreContainer = null;
private static EmbeddedSolrServer server = null;
static {
try {
System.setProperty("solr.solr.home", "D://test//solrcore//core0");
initializer = new CoreContainer.Initializer();
coreContainer = initializer.initialize();
server = new EmbeddedSolrServer(coreContainer, "");
} catch (Exception e) {
e.printStackTrace();
}
}