关于(About)html
官方文档介绍了全部的Apache Solr实现的重要特性和功能。它是免费的,能够到http://lucene.apache.org/solr/下载。java
为了更加的深刻和普遍,设计成一个较高水平的文档,而不是一个菜谱。文档定位到比较普遍的需求,帮助新手和经验丰富的开发人员扩展他们的应用,帮助他们定位和解决问题。在应用开发生命周期中,关于任何一点关于Solr的内容均可以使用这个文档,会获得最权威的信息。
node
这里默认你熟悉搜索的概念而且可以读懂XML,你不须要是个Java程序员,可是有必定的Java基础对于使用Solr是颇有帮助的。程序员
主机和端口样例:数据库
Solr的运行时的默认端口是8983,在例子中网址和截图可能会显示不一样的端口,由于Solr的使用的端口号是可配置的。若是你尚未定制你的Solr的安装,请确保你按照示例时使用端口8983,或配置本身的安装使用示例中显示的端口号。有关配置端口号的信息,请参阅有关章节。一样,URL示例使用'localhost';若是你是从远程位置访问Solr的托管服务器,能够设置相应的域名和IP地址。
路径:apache
路径信息在solr.home之处,在solr安装以后,data和conf目录将被建立。json
开始Solr(Getting Started)bootstrap
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的中文资料不多,官方文档是很是好的资料,在此翻译供你们参考。在翻译的过程当中加入了本身的理解,保留了一些术语和概念性的词汇。一些用处不大的地方省略掉了,因为水平有限时间有限,不免有错误和不许确的地方,欢迎交流。剩下的内容还在翻译中,欢迎关注。