關於(About)
官方文檔介紹了所有的Apache Solr實現的重要特性和功能。它是免費的,可以到http://lucene.apache.org/solr/下載。
為了更加的深入和廣泛,設計成一個較高水平的文檔,而不是一個菜譜。文檔定位到比較廣泛的需求,幫助新手和經驗豐富的開發人員擴展他們的應用,幫助他們定位和解決問題。在應用開發生命周期中,關於任何一點關於Solr的內容都可以使用這個文檔,會得到最權威的信息。
這里默認你熟悉搜索的概念並且能夠讀懂XML,你不需要是個Java程序員,但是有一定的Java基礎對於使用Solr是很有幫助的。
主機和端口樣例:
Solr的運行時的默認端口是8983,在例子中網址和截圖可能會顯示不同的端口,因為Solr的使用的端口號是可配置的。如果你還沒有定制你的Solr的安裝,請確保你按照示例時使用端口8983,或配置自己的安裝使用示例中顯示的端口號。有關配置端口號的信息,請參閱有關章節。同樣,URL示例使用'localhost';如果你是從遠程位置訪問Solr的托管服務器,可以設置相應的域名和IP地址。
路徑:
路徑信息在solr.home之處,在solr安裝之后,data和conf目錄將被創建。
開始Solr(Getting Started)
Solr可以讓程序員更加簡單的使用先進的特性(例如層面搜索)開發出准確、高效的搜索應用。Solr是基於另一個開源搜索技術Lucene(一個Java庫,提供索引和搜索技術,高亮顯示、拼寫檢查、語義分析等功能)。Solr和Lucene都由Apache軟件基金會管理。
Lucene搜索庫目前在top15的開源項目中位列前茅,Apache項目top5開源項目之一,超過4000家公司使用。 Lucene/ Solr的下載量已經超過過去三年,增長了近十倍。 Solr搜索服務器提供了構建於Lucene搜索庫上層的搜索平台,是增長最快的Lucene子項目。 Apache Lucene/ Solr提供了一個成熟的搜索解決方案。
本節將幫助你快速安裝、啟動Solr並介紹Solr的基本結構和功能。
包括以下主題:
安裝Solr:Solr的安裝過程的演練。
運行Solr:介紹運行Solr。包括啟動服務器,添加文件,運行查詢的信息。
快速瀏覽:站在較高的角度介紹Solr的工作原理。
更近一步:介紹Solr的主目錄和配置選項。
Solr的啟動腳本參考:bin/solr script。
安裝Solr(Installing Solr)
本節將介紹如何安裝Solr的。你可以在任何系統中安裝的Solr,目前包括Linux,OS X和Microsoft Windows。需要Java運行時環境(JRE)是可用的,詳見下文。在本節說明適用於任何平台,Windows少數例外。
獲取Java?
你需要1.7或更高版本Java運行時環境(JRE),在命令行輸入以下命令檢查Java版本:
$ java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
安裝Solr:
准備好平台環境后,可以到http://lucene.apache.org/solr/.下載Solr相應安裝包。以Linux為例,簡單起見在home目錄下解壓安裝包:
$ cd ~/ $ tar zxf solr-5.0.0.tgz
解壓好安裝包之后你就可以根據Solr的運行說明來啟動運行Solr了。
運行Solr(Running Solr)
本節將介紹如何用一個例子模式運行Solr,如何添加文件,以及如何運行查詢。
啟動服務:
如果安裝后沒有啟動,可以通過bin/solr目錄來啟動
$ bin/solr start
如果在Windows平台,可以這樣啟動:
bin\solr.cmd start
這樣就可以在后台啟動Solr,並監聽8983端口。
當在后台啟動Solr后,腳本就會檢查啟動的正確性並返回將提示信心返回到控制台。
/bin/solr 和 bin\solr.cmd腳本允許自定義啟動solr。來演示使用bin/solr腳本幾個例子(如果是Windows平台可以使用另外一個命令)。
Solr腳本選項:
bin/solr 腳本有幾個使用選項:
幫助選項:
查看怎么使用bin/solr腳本
$ bin/solr -help
有關啟動命令的具體說明:
$ bin/solr start -help
在前台啟動Solr:
$ bin/solr start -f
#Windows:
bin\solr.cmd start -f
在不同端口啟動Solr:
$ bin/solr start -p 8984
停止Solr:
$ bin/solr stop -p 8983
也可以使用-all參數來關閉所有運行中的Solr實例。
通過一個具體的實例配置來啟動Solr:
Solr也提供了一些有用的示例來幫助你學習Solr的關鍵特性,你可以使用-e參數來啟動示例,例如啟動"techproducts"示例,你需要這么做:
$ bin/solr -e techproducts
現在,你可以使用的例子有:techproducts, dih, schemaless, and cloud. 關於每個例子的細節請查看:Running with Example Configurations。
檢查Solr是否在運行:
如果你不確定Solr在本地正在運行的話,可以使用查看狀態的命令:
$ bin/solr status
這個命令會查找你計算機上的Solr實例,並收集它們的基本信息,例如版本和內存使用情況。如果想進一步確定,可以使用Web瀏覽器的管理控制台。
http://localhost:8983/solr/
Solr管理接口
如果Solr沒有正在運行,瀏覽器會提示連接不上服務器,可以檢查一下端口號然后重試。
創建一個Core:
如果你沒有使用示例配置,為了能夠建立索引和查詢,你必須創建一個Core。你可以這樣做:
$ bin/solr create -c <name>
這會使用data-driven schema創建一個core,會嘗試根據添加的文檔來確定類型建立索引。
查看所有創建新core的選項:
$ bin/solr create -help
添加文檔:
Solr內置查找匹配查詢的文檔,Solr的schema提供了內容的結構(更多關於schema的內容在后面),但是沒有文檔就沒有可以查找的。在Solr起作用之前需要輸入。
在嘗試為內容添加索引之前,你可能會添加一些簡單的樣本文檔。在example/目錄的子目錄下有不同的類型。
在bin/目錄下有一個發送腳本,是一個命令行工具,可以索引不同的文檔。現在不需要關心太多細節。索引部分的所有細節都在The Indexing and Basic Data Operations部分。
要查看有關bin/post的有關信息,使用-help選項。Windows用戶可以參考bin/post工具的Windows部分。
bin/post可以發送各種數據類型到Solr,包括原生的XML和JSON格式、CSV文件,豐富的文檔目錄樹,甚至是抓取的簡單網頁。
繼續,根據示例XML文件添加所有文檔:
$ bin/post -c gettingstarted example/exampledocs/*.xml SimplePostTool version 5.0.0 Posting files to [base] url http://localhost:8983/solr/gettingstarted/update... Entering auto mode. File endings considered are xml,json,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log POSTing file gb18030-example.xml (application/xml) to [base] POSTing file hd.xml (application/xml) to [base] POSTing file ipod_other.xml (application/xml) to [base] POSTing file ipod_video.xml (application/xml) to [base] POSTing file manufacturers.xml (application/xml) to [base] POSTing file mem.xml (application/xml) to [base] POSTing file money.xml (application/xml) to [base] POSTing file monitor.xml (application/xml) to [base] POSTing file monitor2.xml (application/xml) to [base] POSTing file mp500.xml (application/xml) to [base] POSTing file sd500.xml (application/xml) to [base] POSTing file solr.xml (application/xml) to [base] POSTing file utf8-example.xml (application/xml) to [base] POSTing file vidcard.xml (application/xml) to [base] 14 files indexed. COMMITting Solr index changes to http://localhost:8983/solr/gettingstarted/update... Time spent: 0:00:00.153
Solr已經為這些文檔建立索引並包含在這些文件中。
查詢:
現在,你有索引的文檔可以執行查詢。最簡單的方法就是構建一個包含查詢參數的URL。構建任何其他的HTTP URL是完全一樣的。
例如下面在所有文檔中查詢video:
http://localhost:8983/solr/gettingstarted/select?q=video
注意URL的組織方式,包含主機名(localhost),服務器監聽的端口號(8983),應用程序名稱(SOLR),進行查詢(選擇)的請求處理程序,查詢本身(Q=video)。
結果包含在一個XML文檔里,你可以點擊上面的連接。文檔包含兩部分,第一部分是響應頭,包含相應本身的信息。相應的主題部分包含一個或多個文檔標簽。每一個都包含匹配查詢的文檔字段。你可以使用標准的XML文檔轉換技術生成合適的文檔展示給用戶。另外,Solr還可以返回JSON,PHP,Ruby、甚至是用戶自定義的格式。
下面的屏幕截圖顯示了查詢的結果(其實是下面的例子)。頂層響應包含一個名為響應頭和一個結果名為響應列表。結果里面,你可以看到三個搜索結果。
你一旦掌握了查詢的基本思想,很容易探索並用好查詢語法。下面這個和之前一樣,不過在每個返回文檔里只包含ID、name、price。如果你不指定具體的字段,所有的都會返回。
http://localhost:8983/solr/gettingstarted/select?q=video&fl=id,name,price
下面是搜索name字段為black的另一個例子,如果你不指定字段,會返回在schema中定義的默認字段。
http://localhost:8983/solr/gettingstarted/select?q=name:black
可以規定字段的范圍,下面查詢price在$0 ~ $400之間的文檔:
http://localhost:8983/solr/gettingstarted/select?q=price:[0%20TO%20400]&fl=id,name,price
Faceted browsing是Solr的關鍵特性之一,它允許用戶縮小對你的應用有意義的查詢結果,例如一個購物網站可以提供facet來縮小制造商或者價格的搜索結果。Faceting的搜索結果是在返回信息的第三部分,為了感受一下Facet的強大,下面看一個查詢,添加了acet=true
and facet.field=cat
http://localhost:8983/solr/gettingstarted/select?q=price:[0%20TO%20400]&fl=id,name,price&facet=true&facet.field=cat
除了Solr的響應頭和查詢結果,一個facet_counts元素也被返回了。下面是一個省略了響應頭和查詢結果的響應,還可以清楚的看到facet的信息。
<response> <lst name="responseHeader"> ... </lst> <result name="response" numFound="9" start="0"> <doc> <str name="id">SOLR1000</str> <str name="name">Solr, the Enterprise Search Server</str> <float name="price">0.0</float></doc> ... </result> <lst name="facet_counts"> <lst name="facet_queries"/> <lst name="facet_fields"> <lst name="cat"> <int name="electronics">6</int> <int name="memory">3</int> <int name="search">2</int> <int name="software">2</int> <int name="camera">1</int> <int name="copier">1</int> <int name="multifunction printer">1</int> <int name="music">1</int> <int name="printer">1</int> <int name="scanner">1</int> <int name="connector">0</int> <int name="currency">0</int> <int name="graphics card">0</int> <int name="hard drive">0</int> <int name="monitor">0</int> </lst> </lst> <lst name="facet_dates"/> <lst name="facet_ranges"/> </lst> </response>
facet信息展示了每一個cat字段值的數量,你可以容易的提供給用戶一個快捷的縮小查詢范圍的方式。你可以通過向Solr查詢添加一個或多個過濾器來過濾信息。下面這個請求進一步限制了文檔中軟件類別。
http://localhost:8983/solr/gettingstarted/select?q=price:0%20TO%20400&fl=id,name,price&facet=true&facet.field=cat&fq=cat:software
快速瀏覽(A Quick Overview)
對Solr有過一些了解之后,你可以學習Solr可以做的所有酷炫的事情。下面這張圖展示了Solr是如何被集成在應用程序里的。
在上述情況下,Solr在其他服務應用程序旁邊運行。例如,一個在線商店應用程序會提供一個用戶界面、一個購物車、和用戶最終購買的方法。而庫存管理應用程序將允許店員編輯產品信息。該產品元數據應保存在某種數據庫和Solr中。Solr可以很容易的添加商店網上搜索功能,包括以下步驟:
1. 定義一個schema,該schema告訴Solr文檔的哪些內容會被索引。在網上商店示例中,schema中會定義name,description,price,manufacturer等字段。Solr的schema很強大並且很靈活,允許你為應用程序定制Solr的行為。具體細節詳見:Documents, Fields, and Schema Design。
2. 在你的應用服務器上部署Solr。
3. 向Solr提交用戶將要查詢的文檔。
4. 在你的應用程序中拓展搜索功能。
由於Solr基於開放標准,它具有高度的可擴展性。Solr的查詢風格是RESTful的,這意味着在本質上,Solr的查詢是簡單的HTTP請求的URL和結構化文檔響應:主要是XML,也可以是JSON、CSV或者其他的格式。這意味着各種客戶端都能夠使用Solr,從其他的Web應用、豐富的客戶端應用以及移動設備。能夠使用HTTP的任何平台都可以使用Solr。關於客戶端API的具體細節詳見:Client APIs。
Solr是基於Apache Lucene的一個高性能、全功能的搜索引擎。Solr對最簡單的關鍵字查詢和復雜的多字段、層面搜索都提供支持。關於查詢的信息詳見:Searching。
如果中還不夠,Solr還可以處理大批量應用。
一種比較常見的情況是你有相當多的數據或者大量的查詢。單個服務器不能夠承擔巨大的工作量。在這種情況下,你可以通過Solr可以在很多服務器上更好的拆分數據和請求來提高應用程序的性能。可以根據具體的需求可以有多個選項可以進行混合和匹配。
例如,“分片”是一種縮放技術,為了提高可搜索文檔的規模,超越單台服務器的物理瓶頸,一個collection被拆分成多個稱作“Shards”的邏輯分片。傳入的查詢被分配給Collection的每個分片,之后合並每個分片的查詢結果並返回。另一種技術是增加Collection的“副本因子”,這允許你添加額外的Collection副本通過把請求分發到多台機器處理高並發的請求負載。分片和副本並不是相互排斥的,而是共同成就了Solr這個非常強大的可擴展的平台。
最重要的是,這種大批量應用的說法並不只是假設:一些著名的網站都在使用Solr,例如,Macy's, Ebay和Zappo's。
更多信息請移步:https://wiki.apache.org/solr/PublicServers.
更近一步(A Step Closer)
你已經對Solr的schema有所了解,這節將會介紹Solr的home目錄以及其他配置選項。
當Solr運行在一個應用服務器上時,需要訪問home目錄。home目錄包括了重要的配置信息和索引的存儲位置。在單機模式下運行和在分布式模式下運行的home目錄看起來有些不同。
下面這些例子展示了Solr home目錄的關鍵部分:
單機模式:
<solr-home-directory>/ solr.xml core_name1/ core.properties conf/ solrconfig.xml schema.xml data/ core_name2/ core.properties conf/ solrconfig.xml schema.xml data/
分布式模式:
<solr-home-directory>/ solr.xml core_name1/ core.properties data/ core_name2/ core.properties data/
你可能會看到其他文件,但是需要了解的有一下幾個:
1. solr.xml 指定了你的Solr服務器實例配置選項。有關solr.xml的更多信息,請參閱Solr Cores and solr.xml。
2. Per Solr Core
1)core.properties 為每個核心定義了具體的屬性,例如它的名字、屬於哪個Collection、schema的位置和其他參數。關於core.properties的更多信息請參考:Defining core.properties。
2)solrconfig.xml中控制高層次的行為。例如,你可以指定data目錄的備用位置。有關solrconfig.xml中的詳細信息,請參考Configuring solrconfig.xml。
3)schema.xml(或者managed-schema)描述了將會建立索引的文檔。在schema.xml中,你可以定義文檔為Collection的一個fields。你來定義字段類型和fields本身。字段類型的定義功能強大,包括有關Solr如何處理傳入字段值和查詢值的信息。有關schema.xml的更多信息,請參考Documents,Fields,and SchemaDesign。如果你正在使用Solr的Schema API來管理你的fields,你會看到managed-schema 而不是schema.xml(請看Managed Schema Definition in SolrConfig)。
4)data/ 這個目錄包含底層的索引文件。
注意,SolrCloud示例不包括每個Solr Core的conf目錄(因此沒有solrconfig.xml或者schema.xml)。這是因為conf下的配置文件通常存儲在Zookeeper中,這樣配置文件就能夠在集群中傳播。
如果你是在嵌入式Zookeeper實例下使用Solr,你還可以看到zoo.cfg和zoo.data,這是Zookeeper的數據和配置文件。但是,如果你是在自己的Zookeeper集群下使用Solr,你應該提供自己的Zookeeper配置文件,Solr中的拷貝就不會用到。更多信息請參考:SolrCloud。
Solr啟動腳本參考(Solr Start Script Reference)
Solr有一個腳本“bin/solr”用來啟動和停止Solr、創建和刪除Collection和Core、檢查Solr的運行狀態、配置分片等。在Solr安裝目錄下你可以找到bin/目錄下的腳本。bin/solr 腳本使得Solr運行時可以使用簡單的命令來快速完成共同的目標。本節中,標題下方對應可用的命令。對於每一個命令,可用的選項都有一個對應的例子。在整個Solr參考指南中大多數在bin/solr下的例子都是可用的。但Running Solr and Getting Started with Solr Cloud這節除外。
啟動和停止:
啟動和重啟:啟動命令啟動Solr,重啟命令允許你在Solr正在運行的時候重啟Solr。
在SolrCloud模式下,啟動和重啟命令有幾種選項,使用示例配置集,主機名和端口不是默認的,指向本地的Zookeeper集群。
bin/solr start [options] bin/solr start -help bin/solr restart [options] bin/solr restart -help
當使用重啟命令時,必須使用啟動Solr時傳遞的參數。在后台,停止請求被初始化,所以Solr在再一次啟動之前會停止。如果沒有節點在運行,重啟命令會跳過停止Solr,直接啟動。
可用參數:
bin/solr腳本提供了許多選項,允許你自定義常用的方法,例如改變監聽端口。但是,大多數默認值適合於大多數Solr安裝,特別是在剛開始的時候。
參數
|
描述
|
示例
|
---|---|---|
-a "<string>" | 使用額外的JVM參數來啟動Solr,例如-X。如果你使用-D開頭的JVM參數,可以省略-a選項。 | bin/solr start -a "-Xdebug -Xrunjdwp:transport=dt_socket, server=y,suspend=n,address=1044" |
-cloud |
在SolrCloud模式下啟動Solr,會附帶啟動嵌入到Solr中的Zookeeper實例。 這個選項可以簡寫為-c。 如果你已經運行了一個Zookeeper集群,你不想使用嵌入的Zookeeper(單節點),你應該通過-z參數。 更多的細節參考SolrCloud Mode。 |
bin/solr start -c |
-d <dir> | 定義一個服務器目錄,默認是server(如$SOLR_HOME/server),覆蓋默認值是不常見的。當同一主機上運行多個Solr實例時,更常見的是使用相同的服務器目錄,使用-s選項指定唯一的Solr主目錄。 | bin/solr start -d newServerDir |
-e <name> | 用一個示例配置來啟動Solr,這些示例為你快速的啟動Solr,或者只啟動特定的功能提供幫助。 可用的選項有:
更多細節參考: Running with Example Configurations |
bin/solr start -e schemaless |
-f | 在前台啟動Solr,在使用-e選項時不能使用該選項。 | bin/solr start -f |
-h <hostname> | 指定主機名開啟Solr,默認為“localhost”。 | bin/solr start -h search.mysolr.com |
-m <memory> | 啟動Solr時指定JVM堆的最小值(-Xms)和最大值(-Xmx)。 | bin/solr start -m 1g |
-noprompt | 隱藏所有提示。 例如:當使用cloud示例時,一個交互會話會通過幾個選項配置你的SolrCloud集群。如果你想默認,可以在你的請求上簡單的加上-noprompt選項。 |
bin/solr start -e cloud -noprompt |
-p <port> | 指定Solr的運行端口,如果不指定,默認為8983. | bin/solr start -p 8655 |
-s <dir> | 設置solr.solr.home系統屬性,Solr將在此目錄下創建核心目錄。這允許你在一台主機上使用-d選項指定同一個server目錄運行多個Solr實例。如果設置了,具體的目錄會包括一個solr.xml文件,除非solr.xml在Zookeeper中已經存在。默認值為server/solr。 當運行示例時,該參數將被忽略,solr.solr.home取決於示例本身。 |
bin/solr start -s newHome |
-V | 啟動Solr並從啟動腳本獲取詳細信息。 | bin/solr start -V |
-z <zkHost> | 啟動Solr時指定Zookeeper的連接字符串。這個選項只與-c選項一起使用,是在SolrCloud模式下啟動的。如果不指定該選項,Solr會使用嵌入的Zookeeper。 | bin/solr start -c -z server1:2181,server2:2181 |
理解了下面的命令你就理解了默認配置是如何工作的了。
bin/solr start bin/solr start -h localhost -p 8983 -d server -s solr -m 512m
如果默認配置能夠滿足你的需求就沒有必要重新定義了。
設置Java系統屬性:
bin/solr腳本可以通過-D選項來設置JVM參數,這允許你設置任意的Java系統屬性。例如,設置頻率為每秒3次的自動軟提交,你可以這么做:
bin/solr start -Dsolr.autoSoftCommit.maxTime=3000
SolrCloud模式:
-c和-cloud選項是等價的:
bin/solr start -c
bin/solr start -cloud
如果指定了Zookeeper的連接字符串,例如-z 192.168.1.4:2181,那么Solr連接到Zookeeper並加入集群。如果在使用cloud模式啟動Solr時沒有指定-z選項,Solr就會加載嵌入的Zookeeper,服務器會監聽Solrport+1000端口。如果Solr在8983端口運行,那么嵌入的Zookeeper就會監聽9983端口。
重要提示:如果你的Zookeeper連接字符串使用了chroot,例如“localhost:2181/solr”,然后在使用bin/solr腳本加載SolrCloud之前你需要引導/solr zk節點。要做到這一點就要使用Solr附帶的zkcli.sh腳本,例如:
server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181/solr -cmd bootstrap -solrhome server/solr
當在SolrCloud模式下啟動時,互動腳本會話會提示你選擇一個配置集使用。關於SolrCloud的更多信息參考:Getting Started With SolrCloud
在樣例配置下運行:
bin/solr start -e <name>
這個示例配置能讓你快速入門。
提供了如下示例:
1. cloud:這個示例一台機器上有1-4個節點的SolrCloud。選擇了該示例,有交互會話會提示你選擇初始化配置集、節點個數、端口、要創建的Collection等。你可以選擇在$SOLR_HOME/server/solr/configsets下的任意可用的配置。
2. 這個例子是單節點的,示例文檔中的schema包含在$SOLR_HOME/example/exampledocs目錄下,配置集可以在SOLR_HOME/sever/solr/configsets/sample_techproducts_configs目錄下找到。
3. dih:這個示例中,DataImportHandler (DIH)是可用的,啟用和幾個例子的dataconfig.xml文件預先配置為不同類型的DIH支持的數據(如數據庫內容,電子郵件,RSS訂閱等)。所使用的配置集是為DIH自定義的,在$SOLR_HOME/example/example-DIH/solr/conf目錄下。關於DIH的更多信息參考:Uploading Structured Data Store Data with the Data Import Handler.
4. schemaless:這個例子是使用managed schema的單節點模式,就像在Managed Schema Definition in SolrConfig一節中所描述的一樣,提供了一個精簡的預定義的schema。Solr會使用此配置運行在Schemaless模式下,當往Solr中添加文檔時,Solr會動態的匹配字段類型並創建。用到的配置集可以在$SOLR_HOME/server/solr/configsets/data_driven_schema_configs下找到。
停止:
停止命令會發送一個STOP請求到正在運行的Solr節點,允許Solr比較優雅的關閉。命令等待5s后就會強制關閉掉Solr進程(kill -9)。
bin/solr stop [options]
bin/solr stop -help
可用參數:
參數
|
描述
|
示例
|
---|---|---|
-p <port> | 停止運行在指定端口上的Solr實例。如果你運行了不止一個Solr實例,或者在SolrCloud模式下運行,你同樣需要在請求停止時指定端口,或者使用-all選項。 | bin/solr stop -p 8983 |
-all | 停止所有有有效PID的Solr實例。 | bin/solr stop -all |
-k <key> | 用來保護無意中停止的Solr實例。默認為solrrocks。 | bin/solr stop -k solrrocks |
信息:
版本:version命令簡單的返回已經安裝並且存在的Solr版本。
$ bin/solr version 5.x.0
狀態:狀態命令能展示出運行在本地系統的所有Solr節點的JSON格式的基本信息。狀態命令使用SOLR PID DIR 環境變量來查找Solr的進程文件以獲取Solr的運行狀態,SOLR_PID_DIR變量默認為bin目錄。
bin/solr status
輸出包括集群的每個節點的狀態,例如:
Found 2 Solr nodes: Solr process 39920 running on port 7574 { "solr_home":"/Applications/Solr/solr-5.0.0/example/cloud/node2/solr/", "version":"5.0.0 1658469 - anshumgupta - 2015-02-09 09:54:36", "startTime":"2015-02-10T17:19:54.739Z", "uptime":"1 days, 23 hours, 55 minutes, 48 seconds", "memory":"77.2 MB (%15.7) of 490.7 MB", "cloud":{ "ZooKeeper":"localhost:9865", "liveNodes":"2", "collections":"2"}} Solr process 39827 running on port 8865 { "solr_home":"/Applications/Solr/solr-5.0.0/example/cloud/node1/solr/", "version":"5.0.0 1658469 - anshumgupta - 2015-02-09 09:54:36", "startTime":"2015-02-10T17:19:49.057Z", "uptime":"1 days, 23 hours, 55 minutes, 54 seconds", "memory":"94.2 MB (%19.2) of 490.7 MB", "cloud":{ "ZooKeeper":"localhost:9865", "liveNodes":"2", "collections":"2"}}
健康監測:
在SolrCloud模式下健康監測命令為每個Collection生成JSON格式的健康監測報告。健康報告提供了關於Collection的每個分片的副本狀態信息,包括已提交的文件數量和當前的狀態信息。
bin/solr healthcheck [options]
bin/solr healthcheck -help
可用參數:
參數 |
描述
|
示例
|
---|---|---|
-c <collection> | 需要監測的Collection(必要) | bin/solr healthcheck -c gettingstarted |
-z <zkhost> | Zookeeper連接字符串,默認是localhost:8983,如果你的Solr運行端口不是8983,需要指定具體的Zookeeper連接字符串。默認端口是Solrport+1000. | bin/solr healthcheck -z localhost:2181 |
下面是一個使用非標准的Zookeeper連接字符串健康監測請求和響應的示例,有兩個節點在運行。
$ bin/solr healthcheck -c gettingstarted -z localhost:9865 { "collection":"gettingstarted", "status":"healthy", "numDocs":0, "numShards":2, "shards":[ { "shard":"shard1", "status":"healthy", "replicas":[ { "name":"core_node1", "url":"http://10.0.1.10:8865/solr/gettingstarted_shard1_replica2/", "numDocs":0, "status":"active", "uptime":"2 days, 1 hours, 18 minutes, 48 seconds", "memory":"25.6 MB (%5.2) of 490.7 MB", "leader":true}, { "name":"core_node4", "url":"http://10.0.1.10:7574/solr/gettingstarted_shard1_replica1/", "numDocs":0, "status":"active", "uptime":"2 days, 1 hours, 18 minutes, 42 seconds", "memory":"95.3 MB (%19.4) of 490.7 MB"}]}, { "shard":"shard2", "status":"healthy", "replicas":[ { "name":"core_node2", "url":"http://10.0.1.10:8865/solr/gettingstarted_shard2_replica2/", "numDocs":0, "status":"active", "uptime":"2 days, 1 hours, 18 minutes, 48 seconds", "memory":"25.8 MB (%5.3) of 490.7 MB"}, { "name":"core_node3", "url":"http://10.0.1.10:7574/solr/gettingstarted_shard2_replica1/", "numDocs":0, "status":"active", "uptime":"2 days, 1 hours, 18 minutes, 42 seconds", "memory":"95.4 MB (%19.4) of 490.7 MB", "leader":true}]}]}
Collections and Cores:
bin/solr腳本還可以幫助你創建Collections(在SolrCloud模式下)或者cores(單節點模式),或者刪除Collections。
注:創建需要相應的權限。
創建命令會監測Solr的運行模式(SolrCloud或者standalone),創建Collections或者Cores取決於運行模式。
bin/solr create options
bin/solr create -help
可用參數:
參數
|
描述
|
示例
|
---|---|---|
-c <name> | 要創建的collection或者core的名字(必須)。 | bin/solr create -c mycollection |
-d <confdir> |
配置目錄, 默認為 data_driven_schema_configs. 在SolrCloud模式下運行時,參考:Configuration Directories and SolrCloud。 |
bin/solr create -d basic_configs |
-n <configName> | 配置名, 默認和core或者collection名字相同。 | bin/solr create -n basic |
-p <port> | 命令發送到本地Solr實例的端口號,默認的,腳本會嘗試通過正在運行的Solr實例來檢測端口。 這個選項對於在同一台機器上運行多個Solr實例時選擇具體的實例創建core很有用。 |
bin/solr create -p 8983 |
-s <shards> -shards |
collection的分片數量,默認值為1,只在SolrCloud模式下使用。 | bin/solr create -s 2 |
-rf <replicas> -replicationFactor |
collection中的文檔的備份數,默認值為1.(無復制)。 | bin/solr create -rf 2 |
配置目錄和SolrCloud:
在SolrCloud中創建一個collection之前,需要把用到的配置目錄上傳到Zookeeper。創建命令支持集合和配置目錄是如何工作的幾種情況,你需要確定Zookeeper的配置目錄是否要在多個Collection中共享。我們通過幾個例子來說明SolrCloud的配置目錄是如何工作的。
首先,如果你不使用-d或者-n選項,默認的配置($SOLR_HOME/server/solr/configsets/data_driven_schema_configs/conf)會被上傳到Zookeeper中,使用與Collection相同的名字。例如,接下來的命令就會導致the data_driven_schema_configs配置被上傳到Zookeeper的/configs/contacts下:bin/solr create -c contacts,如果你使用bin/solr create -c contacts2創建另一個collection,data_driven_schema_configs會拷貝一份上傳到Zookeeper的/configs/contacts2下。你對contacts collection做出的任何改變都不會影響到contacts2 collection。簡單的說,默認的創建行為,會為你創建的collection創建一個唯一的副本。
你可以使用-n選項覆蓋Zookeeper中配置目錄的名字,例如,bin/solr create -c logs -d basic_configs -n basic命令就會上傳server/solr/configsets/basic_configs/conf目錄到Zookeeper並命名為/configs/basic。
請注意,我們使用了-d選項來指定與默認值不同的配置。Solr提供了在server/solr/configsets目錄下的幾個內置配置。當然,你也可以使用-d選項來指定你的配置目錄。例如,bin/solr create -c mycoll -d /tmp/myconfigs會上傳/tmp/myconfigs到Zookeeper的/configs/mycoll下。再次重申,配置目錄使用和collection一樣的名字,除非你使用-n來指定。
使用-n選項可以指定共享配置的collection,例如下面的命令創建一個新的collection並且共享已經存在的basic配置:
bin/solr create -c logs2 -n basic
Data-driven schema和共享配置:
data_driven_schema_configs schema可以變異為被索引的數據,因此,我們不推薦你在collection之間共享data-driven配置,除非你確定所有的collection都要繼承其中一個collection的索引數據的變化。
刪除:
delete命令會監測Solr運行在什么模式下(standalone或者SolrCloud)然后刪除具體的core或者collection。
bin/solr delete [options]
bin/solr delete -help
如果運行在SolrCloud模式下,delete命令會檢查配置目錄是否在被其他collections使用,如果沒有配置目錄會從Zookeeper中刪除。例如,如果你用bin/solr create -c contacts命令創建了一個collection,然后刪除命令bin/solr delete -c contacts 會檢查/configs/contacts配置目錄是否被其他collection使用,如果沒有,/configs/contacts 目錄就會從Zookeeper中刪除。
可用參數:
參數
|
描述
|
示例
|
---|---|---|
-c <name> | 要刪除的collection名字(必須) | bin/solr delete -c mycoll |
-deleteConfig <true|false> |
刪除Zookeeper中的配置目錄,默認為true。 如果配置目錄在被其他的collection使用,則設置為true,配置目錄也不會被刪除。 |
bin/solr delete -deleteConfig false |
-p <port> | 發送刪除命令的Solr的本地實例的端口。默認,腳本會嘗試尋找Solr實例來檢測端口。 如果你的同一台機器上有多個獨立運行的實例,因此會要求你指定具體實例的core。 |
bin/solr delete -p 8983 |
Zookeeper選項:
bin/solr腳本允許某些操作影響Zookeeper。這些操作只在SolrCloud模式下使用。
bin/solr zk [options]
bin/solr zk -help
注:Solr在發出這些命令之前至少要初始化Solr期望的Zookeeper znodes節點一次。一旦Zookeeper被初始化,Solr不需要運行在任何一個節點上就可以使用這些命令。
上傳一個配置集:
使用這個Zookeeper子命令上傳預定義的配置集或者自定義的配置集之一到Zookeeper。
可用參數:(所有參數都是必須的)
參數
|
描述
|
示例
|
---|---|---|
-upconfig | 從本地文件系統上傳配置集到Zookeeper | -upconfig |
-n <name> | Zookeeper中配置集的名稱。這個命令會上傳配置集到configs Zookeeper節點。 你可以從管理控制UI上看見所有已經上傳的配置集。選擇cloud->tree->configs來看。 如果指定了現有的預配置集,它將會被覆蓋。 |
-n myconfig |
-d <configset dir> |
需要上傳的配置集路徑,它應該有一個conf文件夾,需要包含solrconfig.xml等。 如果只提供了一個名字,$SOLR_HOME/server/solr/configsets會被檢查,使用絕對路徑來代替。 |
-d /absolute/path/to/configset/source |
-z <zkHost> |
Zookeeper連接字符串 |
-z 123.321.23.43:2181 |
使用這些參數的上傳命令的一個例子:
bin/solr zk -upconfig -z 111.222.333.444:2181 -n mynewconfig -d /path/to/configset
這個命令執行之后不會自動生效!它只是上傳配置集到Zookeeper。你可以使用Collections API來向使用此配置集的所有Collection發出RELOAD命令。
下載數據集:
使用這個Zookeeper子命令來下載Zookeeper中的數據集到本地文件系統。
可用參數:(所有參數都是必須的)
參數
|
描述
|
示例
|
---|---|---|
-downconfig | 下載Zookeeper中的數據集到本地文件系統。 | -downconfig |
-n <name> | 要下載的數據集名稱, Admin UI>>Cloud>>tree>>configs 節點列出了所有可用的數據集。 | -n myconfig |
-d <configset dir> |
將數據集下載到哪個路徑下。 如果只提供了名稱,SOLR_HOME/server/solr/configsets 會是父路徑。 也支持絕對路徑。 在這兩種情況下,在目的目錄已經存在的配置集將會被覆蓋。 |
-d directory_under_configsets -d /absolute/path/to/configset/destination |
-z <zkHost> |
Zookeeper連接字符串。 |
-z 123.321.23.43:2181 |
使用這些參數的下載命令的一個例子:
bin/solr zk -downconfig -z 111.222.333.444:2181 -n mynewconfig -d /path/to/configset
一個“最佳實踐”是將你的配置集在某種版本管理系統中記錄。這種情況下,downconfig很少被使用。
譯者注:關於Solr的中文資料很少,官方文檔是非常好的資料,在此翻譯供大家參考。在翻譯的過程中加入了自己的理解,保留了一些術語和概念性的詞匯。一些用處不大的地方省略掉了,由於水平有限時間有限,難免有錯誤和不准確的地方,歡迎交流。剩下的內容還在翻譯中,歡迎關注。