Solr官方文档翻译-About & Getting Started

关于(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平台,可以这样启动:

binsolr.cmd start

   这样就可以在后台启动Solr,并监听8983端口。

  当在后台启动Solr后,脚本就会检查启动的正确性并返回将提示信心返回到控制台。

  /bin/solr 和 binsolr.cmd脚本允许自定义启动solr。来演示使用bin/solr脚本几个例子(如果是Windows平台可以使用另外一个命令)。

  Solr脚本选项:

   bin/solr 脚本有几个使用选项:

  帮助选项:

  查看怎么使用bin/solr脚本

$ bin/solr -help

  有关启动命令的具体说明:

$ bin/solr start -help

  在前台启动Solr:

$ bin/solr start -f

#Windows:
binsolr.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,或者只启动特定的功能提供帮助。

可用的选项有:

  • cloud
  • techproducts
  • dih
  • schemaless

更多细节参考: 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 directory_under_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的中文资料很少,官方文档是非常好的资料,在此翻译供大家参考。在翻译的过程中加入了自己的理解,保留了一些术语和概念性的词汇。一些用处不大的地方省略掉了,由于水平有限时间有限,难免有错误和不准确的地方,欢迎交流。剩下的内容还在翻译中,欢迎关注。

  

   

原文地址:https://www.cnblogs.com/wxisme/p/5205217.html