cd solr-6.6.0\
bin\solr start -e cloud -noprompt
D:\machine\solr\solr-6.6.0>bin\solr start -e cloud -noprompt Welcome to the SolrCloud example! Starting up 2 Solr nodes for your example SolrCloud cluster. ... Started Solr server on port 8983. Happy searching! ... Started Solr server on port 7574. Happy searching! ... SolrCloud example running, please visit: http://localhost:8983/solr D:\machine\solr\solr-6.6.0>
Solr 如今將運行兩個節點,一個在端口7574,一個在端口8983,有一個自動建立的文檔
gettingstarted
,默認有兩個分片收集,每一個分片有兩個副本,這管理頁面的Cloud tab 能夠很直觀的查看。html
Solr服務器已經啓動並運行,可是它不包含任何數據。Solr安裝包括了bin/post工具,以便從一開始就方便地從Solr的文檔中得到各類類型的文檔。java
在windows中,bin/post能夠委託給一個獨立運行的Java程序叫
SimplePostTool
,能夠執行運行java -jar example/exampledocs/post.jar
node
D:\machine\solr\solr-6.6.0>java -jar example\exampledocs\post.jar -h
查看幫助能夠(獲取文件,遞歸到一個網站或文件系統文件夾,或者向Solr服務器發送直接命令) SimplePostTool version 5.0.0 Usage: java [SystemProperties] -jar post.jar [-h|-] [<file|folder|url|arg> [<file|folder|url|arg>...]] ... ...
重點在這裏:java [SystemProperties] -jar post.jar [-h|-] [<file|folder|url|arg> [<file|folder|url|arg>...]]
linux
|
表示或者,SystemProperties
表示系統屬性;這裏的
key,value
值都是隨便定義的,沒什麼特別要求,這樣你隨後經過System.getProperty(key)
經過key就能在任意時刻獲取到該key對應的參數值,若是是在dos命令行下,你也能夠經過java -Dkey=value這種方式指定,至此java [SystemProperties]
這部分你應該理解了,至於後面的-jar
是java命令的參數,即執行一個jar文件,-jar後面指定一個jar包路徑,默認是相對於當前所在路徑,-h
即表示添加了這個即會打印命令提示信息,就比如你敲java -h是相似的,後面的file,folder,url,args分別表示你要提交的數據的幾種不一樣表示形式,file即表示你要提交的數據是存在於文件中,而folder即表示你要提交的存在於文件夾中,url即表示你要提交的數據是存在於互聯網上的一個URL地址表示的資源,它多是一個HTML頁面,多是一個PDF文件,多是一個圖片等等,args即表示你要提交的數據直接在命令行敲出來,但arges並非隨隨便便一個字符串就行的,它須要有固定的格式,solr才能解析web
java -jar example\exampledocs\post.jar -h
查看幫助列出的內容說到:Supported System Properties and their defaults: -Dc=<core/collection> -Durl=<base Solr update URL> (overrides -Dc option if specified) -Ddata=files|web|args|stdin (default=files) -Dtype=<content-type> (default=application/xml) -Dhost=<host> (default: localhost) -Dport=<port> (default: 8983) -Dbasicauth=<user:pass> (sets Basic Authentication credentials) -Dauto=yes|no (default=no) -Drecursive=yes|no|<depth> (default=0) -Ddelay=<seconds> (default=0 for files, 10 for web) -Dfiletypes=<type>[,<type>,...] (default=xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log) -Dparams="<key>=<value>[&<key>=<value>...]" (values must be URL-encoded) -Dcommit=yes|no (default=yes) -Doptimize=yes|no (default=no) -Dout=yes|no (default=no)
-D
是命令行下指定系統屬性的固定前綴數據庫
http://host:port/solr/${collectionName}/update
,這裏的${collectionName}
和上面的c屬性值保持一致data表示你要提交數據的幾種模式,files模式表示你要提交的數據在文件裏apache
dos
命令行下經過System.in
輸入流臨時接收,跟args
有點相似,但不一樣的是,stdin
模式下,post.jar後面不須要指定任何參數,直接回車便可,而後程序會等待用戶輸入,用戶輸入完畢再回車,post.jar
會接收到用戶輸入,post.jar
從新被喚醒繼續執行。而args
是直接在post.jar
後面輸入參數,沒有一箇中斷過程,而stdin
模式下若是用戶一直沒有輸入,那post.jar
就會一直阻塞在那裏等待用戶輸入爲止。post.jar
支持提交哪些文件類型,後面有列出默認支持的文件類型,若是你想覆蓋默認值,那麼請指定此參數id=1&name=yida
之類的false
表示不提交至sor admin,但設置爲true
也不必定就意味着就必定會把索引寫入磁盤,這取決於solrconfig
中directory
配置的實現是什麼,若是配置的是RAMDirectory
,就僅僅只在內存中操做了。no
即表示不對索引進行優化Examples: java -Dc=gettingstarted -jar post.jar *.xml java -Ddata=args -Dc=gettingstarted -jar post.jar '<delete><id>42</id></delete>' java -Ddata=stdin -Dc=gettingstarted -jar post.jar < hd.xml java -Ddata=web -Dc=gettingstarted -jar post.jar http://example.com/ java -Dtype=text/csv -Dc=gettingstarted -jar post.jar *.csv java -Dtype=application/json -Dc=gettingstarted -jar post.jar *.json java -Durl=http://localhost:8983/solr/techproducts/update/extract -Dparams=literal.id=pdf1 -jar post.jar solr-word.pdf java -Dauto -Dc=gettingstarted -jar post.jar * java -Dauto -Dc=gettingstarted -Drecursive -jar post.jar afolder java -Dauto -Dc=gettingstarted -Dfiletypes=ppt,html -jar post.jar afolder
Solr安裝後,包括一個docs/
子目錄,windows下使用以下命令:java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar docs/
編程
linux下可使用bin/post -c gettingstarted docs/
命令解析:json
-c gettingstarted
:要索引的集合的名稱docs/
: Solr安裝目錄下的/docs
的相對路徑使用bin/post
,索引示例Solr XML文件中的示例/example
文檔/:
linux下使用:bin/post -c gettingstarted example/exampledocs/*.xml
windows下使用:java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar example\exampledocs\*.xml
你將會看到:windows
D:\machine\solr\solr-6.6.0>java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar 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,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log Entering recursive mode, max depth=999, delay=0s 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:03.233
注意:您能夠瀏覽文檔索引在http://localhost:8983/solr/ge...
linux使用: bin/post -c gettingstarted example/exampledocs/books.json
windows使用:java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar example\exampledocs\books.json
你將看到以下信息:
D:\machine\solr\solr-6.6.0>java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar example\exampledocs\books.json 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,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log Entering recursive mode, max depth=999, delay=0s POSTing file books.json (application/json) to [base]/json/docs 1 files indexed. COMMITting Solr index changes to http://localhost:8983/solr/gettingstarted/update... Time spent: 0:00:01.211
linux下使用:bin/post -c gettingstarted example/exampledocs/books.csv
windows下使用:java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar example\exampledocs\books.csv
在你的終端,你會看到:
D:\machine\solr\solr-6.6.0>java -Dc=gettingstarted -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar example\exampledocs\books.csv 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,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log Entering recursive mode, max depth=999, delay=0s POSTing file books.csv (text/csv) to [base] 1 files indexed. COMMITting Solr index changes to http://localhost:8983/solr/gettingstarted/update... Time spent: 0:00:00.874
更多信息,請參閱Solr指南部分CSV格式的索引更新CSV Formatted Index Updates
Document Type
的下拉選項卡選擇Document Builder
每次添加一個字段來構建文檔.單擊表單下面的Submit文檔按鈕,以索引文檔。schema.xml
指定了一個uniqueKey
字段id
,即便咱們索引一個內容屢次,它也不會重複添加,當咱們POST命令到Solr添加文檔時,若是uniqueKey
字段當前值已存在,它會自動替換原來的內容.linux使用:bin/post -c gettingstarted -d "<delete><id>SP2514N</id></delete>"
windows使用:java -Dc=gettingstarted -Ddata=args -jar example\exampledocs\post.jar "<delete><id>1</id></delete>"
Solr能夠經過REST客戶端,cURL,wget,POSTMAN等來查詢,以及許多編程語言均可以使用的本地客戶端。
gettingstarted
默認文檔查詢:http://localhost:8983/solr/#/...若是你不改變表單裏的任何內容,直接點擊Execute Query
按鈕,你將獲得默認10條JSON格式的文檔(*:*
做爲q的參數表示匹配全部文檔)由Admin UI發送到Solr的URL顯示在上面屏幕右上角的淺灰色中,若是你點擊它,你的瀏覽器將會顯示原始的響應。要使用cURL,請在cURL命令行中使用相同的URL:
curl "http://localhost:8983/solr/gettingstarted/select?indent=on&q=*:*&wt=json"
搜索一個特定的詞,須要把在Solr Admin UI查詢板塊中的
q
的參數值*:*
替換成你想要查詢的詞
curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=foundation"
你將獲得:
$ curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=foundation" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2017 100 2017 0 0 123k 0 --:--:-- --:--:-- --:--:-- 123k{ "responseHeader":{ "zkConnected":true, "status":0, "QTime":17, "params":{ "q":"foundation", "indent":"true", "wt":"json"}}, "response":{"numFound":3,"start":0,"maxScore":3.4038174,"docs":[ { "id":"0553293354", "cat":["book"], "name":["Foundation"], "price":[7.99], "inStock":[true], "author":["Isaac Asimov"], "series_t":["Foundation Novels"], "sequence_i":1, "genre_s":"scifi", "_version_":1576664844219711488}, { ...
響應代表,有3個命中("numFound":3),其中前10個被返回,由於默認的start=0
,rows=10
。您能夠經過指定這些params查詢結果,其中start
是第一個結果返回的(基於零的)位置,而raws
是一頁的大小。
fl param
,該命令將使用逗號分隔的字段名列表。只返回id
字段:curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=foundation&fl=id"
q=foundation
匹配了咱們已經索引的幾乎全部文檔,由於文檔中的大多數文件都包含「Apache軟件基金會」。要限制搜索到特定字段,使用語法"q=field:value",例如只在name字段中搜索Foundation:curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=name:Foundation"
要搜索一個多詞短語,用雙引號括起來:
q="這裏的多個詞語"
。例如,搜索"CAS latency"注意,術語之間的空格必須轉換爲"+"
(Admin UI將自動處理URL編碼):
curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=\"CAS+latency\""
你將看到:
"responseHeader":{ "zkConnected":true, "status":0, "QTime":9, "params":{ "q":"\"CAS latency\"", "indent":"true", "wt":"json"}}, "response":{"numFound":2,"start":0,"maxScore":2.9027793,"docs":[ { "id":"TWINX2048-3200PRO", "name":["CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail"], "manu":["Corsair Microsystems Inc."], "manu_id_s":"corsair", "cat":["electronics", "memory"], "features":["CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, heat-spreader"], ...
默認狀況下,當你在單一查詢中搜索多個詞或短語時,Solr只要求其中一個匹配,以便讓文件匹配,包含更多詞語的文檔將在結果列表中排序更高。
curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=on&q=%2Baaa+%2BFoundatio"
"Foundation"
可是不含有"aaa"
的文檔,在Admin UI 的查找頁面的q
參數中輸入+Foundation -one
,在curl中將"+"
編碼爲"%2B"
$ curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=on&q=%2BFoundation+-aaa"
深刻學習:要了解更多Solr搜索選項,請參閱Solr參考指南的搜索部分。
bin/solr stop -all ; rm -Rf example/cloud/