更新时间:2024-11-29 GMT+08:00

Solr概述

Solr是基于Apache Lucene的独立的企业级应用搜索服务器。提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。

Solr常见的业务操作流程如下:

  1. 更新默认配置集文件,上传给ZooKeeper。

    Solr需要指定配置集创建Collection,配置集主要有两个配置文件:一个是“solrconfig.xml”(主要定义Solr的处理程序和一些扩展程序);另一个是“managed-schema”(主要定义索引的字段和字段类型)。用户可以首先获取Solr的默认的配置集confWithSchema,对其配置集文件进行修改后上传。

    具体的操作命令可参考Shell客户端操作命令

  2. 创建Collection。

    根据业务的需要,指定配置集创建Collection。

    在Shell客户端操作命令、Solr Admin的页面操作、Linux下的curl命令、浏览器URL下的Rest消息、Hue对接Solr章节都有创建Collection的方法,建议参考Shell客户端操作命令

  3. 查询Collection的状态。

    登录Manager,选择集群 > 待操作集群名称 > 服务 > Solr,确认Solr的实例全部正常工作。

    单击Solr WebUI的“SolrServerAdmin”(两个任选一个)进入Solr Admin页面。

    在Solr Admin页面,选择Cloud > Graph即可查看Collection的状态。

  4. 导入数据,创建索引。

    根据不同的业务需求,可以分为:

    • Solr over HBase:Solr索引HBase上的数据,请参考Solr over HBase
    • Solr over HDFS:Solr索引HDFS上的数据,请参考Solr over HDFS
    • Solrj:通过客户端开发创建索引。
  5. 查询索引数据。

    查询索引数据操作,参考Solr Admin的页面操作

  6. 删除索引数据。

    在Shell客户端操作命令、Solr Admin的页面操作、Linux下的curl命令、浏览器URL下的Rest消息章节都有删除索引数据的方法,建议参考Shell客户端操作命令

  7. 删除Collection。

    在Shell客户端操作命令、Solr Admin的页面操作、Linux下的curl命令、浏览器URL下的Rest消息、Hue对接Solr章节都有删除Collection的方法。建议参考Shell客户端操作命令

  • 建议Solr中Solr Core总数不超过4万个。Solr Core总数较多时,如果需要重启Solr服务,建议分批次重启SolrServer实例,减少对Zookeeper的压力。
  • 在创建Collection时,要确保Solr服务的所有实例正常,否则可能会造成部分Shard创建失败,从而导致整个Collection创建失败。
  • 在删除Collection时,要确保Solr服务的所有实例状态正常,否则会造成数据删除不干净,重启服务后Solr的界面上会显示出现垃圾数据。因操作不当导致垃圾数据产生时,记住这些垃圾数据的Core的名称,从后台进入到存放垃圾数据的Core目录,将有垃圾数据的Core名称的文件夹删除后,重启Solr服务即可。实例正常后,也可以再次删除对应的Collection名称,清除遗留数据。
  • 在安全模式下,需要注意登录的用户是否有对相应的Collection操作的权限,没有对该Collection的读写权限,无法对该Collection进行操作。
  • Solr内部采用的是UTC零时区,如果在客户端创建的Core和Collection时区与Solr内部处理的时区不一致,在Solr Admin的页面显示Core的启动时间会有一定时差,对业务没有影响。
  • 对于已创建的collection都会占用内存资源,当存在Solr实例的内存使用超过jvm设置的-Xmx值的90%时,Solr集群会给出内存超阈值使用告警。