Centos下安装Solr

什么是Solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果

Solr类似webservice,调用接口,实现增加,修改,删除,查询索引库。

Centos下安装与配置

Solr 默认运行在jetty WEB服务下,也可以运行在tomcat服务下,配置稍微有点麻烦,这里不做介绍

  1. 接下来下载并安装Solr,创建一目录专门存储Solr,找个空间比较大的盘符,使用wget下载,也可以直接其他服务器下载好了,拷贝对应服务器,下载目前最新版本

     [root@localhost home]# mkdir solr
     [root@localhost home]# cd solr
     [root@localhost solr]# wget http://mirror.bit.edu.cn/apache/lucene/solr/7.4.0/solr-7.4.0.tgz
    
  2. 解压solr

     [root@localhost solr]# tar -zxvf solr-7.4.0.tgz
    
  3. 启动solr服务

     [root@localhost solr-7.4.0]# bin/solr start -force
    
     出现 Started Solr server on port 8983 (pid=23452). Happy searching! 表示启动成功,则可以通过浏览器浏览
    

    http://127.0.0.1:8983/solr/#/

  4. solr 启动,有两种模式,一种是单机版启动(bin/solr start),一种是分布式版启动(bin/solr start -e cloud)

  5. solr 目录说明

    • bin:是脚本的启动目录
    • contrib:第三方包存放的目录
    • dev-tools:跟开发工具相关的包
    • dist:编译打包后存放目录,即构建后的输出产物存放的目录
    • docs:solr文档的存放目录
    • example:示范例子的存放目录,这里展示了DIH,即数据导入处理的例子,这里包含了多个core实例
    • licenses:权限相关的
    • lucene:solr基于Lucene开发,本身是lucene代码的目录,但是构建后都为空,相关东西已经到jar包中
    • server:即solr搜索引擎框架,基于jetty web服务器开发的。包含jetty服务器的配置。(这个目录就类似于一个包含了tomcat服务器,里面有一个基于solr的web工程)

使用Solr

Solr的内核由配置文件、Lucene索引文件和Solr事务日志组成。Jetty上运行的一台Solr服务器可以控制多个内核。每个Solr服务器有且仅有一个包含所有内核的主目录。

创建Solr Core

通过Solr管理页面->Core Admin创建。如果直接创建,会提示


image.png

Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/home/solr/solr-7.4.0/server/solr/new_core'
这是因为在此目录下没有相应的配置文件。官网给出了默认的配置文件,这时需要把默认配置文件拷贝到自己创建的Core目录(new_core)下即可.

  [root@localhost solr]# cp -r configsets/_default/* new_core/

最终new_core目录下

    [root@localhost new_core]# ls
    conf

这是再点击创建"Add Core",则Solr Core创建成功,这是可以在左侧的“Core Selector”看到开始创建的Solr Core

创建成功后,new_core包含以下文件目录

    [root@localhost new_core]# ls
    conf  core.properties  data
  • conf:配置文件目录;其中solrconfig.xml是定义Solr内核的主要配置,修改了此配置文件,需要在配置界面执行“Reload”;但大多数可以不做修改即可满足我们大部分场景;
  • core.properties:内核基本配置信息,它会被Solr主目录自动扫描此文件包含的基本配置信息;
  • data:数据目录。

至此 Solr Code创建完毕。

为Solr添加数据

从数据库mysql中导入数据,通过数据库导入器DIH,导入方式分为导入整个数据集(索引整个文档集合)和增量导入(导入上次后的修改),后者不开启额外的进程就可以将数据导入Solr中。具体使用步骤:

  • 在conf/solrconfig.xml加载DIH的Jar依赖包,使用solr-dataimporthandler-*.jar作为导入依赖包,

具体配置如下:

  1. 需要在solrconfig.xml中配置此包依赖,此Jar在dist目录下,

      <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
    
  2. 定义dataimport处理器

     <requestHandler name="/dataimport" class="solr.DataImportHandler">
       <lst name="defaults">
         <str name="config">solr-data-config.xml</str>
       </lst>
     </requestHandler>
    

db-data-config.xml 为数据导入配置,这个我们在conf目录下新建此配置文件。此文件包含外部数据源的引用信息,这些来源将被拉取。

进行了以上配置,可以在管理界面看到导入界面


image.png
  1. 接下来定义数据源,我们的数据源是mysql,所以这里需要配置mysql数据源,通过mysql connector连接数据库。

在contrib下创建mysqldb/lib目标,并下载wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

在solrconfig.xml下添加此包的依赖

    <lib dir="${solr.install.dir:../../../..}/contrib/mysqldb/lib" regex=".*\.jar" />

编辑配置上面的conf/db-data-config.xml

<dataConfig>
  <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              convertType="true"
              url="jdbc:mysql://localhost:3306/testdb"
              user="test"
              password="test"/>
  <document>
    <entity name="test" query="SELECT * FROM test" >
    </entity>
  </document>
</dataConfig>

这时我们在管理界面,就可以看到test Entity,同时能在“Configuration”看到要执行的配置文件

image.png

然后点击"Execute",执行完毕后点击“Refresh Status” 刷新状态,可以看到执行结果。

界面命令说明:

  • abort:停止当前正在进行的操作
  • delta-import:调用deltaQuery拉取数据。可以带上几个额外的参数:&clean=true&commit=true等等(和full_import相同)
  • full-import:调用query拉取所有数据。请求会马上返回,后台有新线程执行重建索引的操作。可以通过status操作查询状态。额外参数:
  • clean:缺省为true。是否在开始重建索引前清除旧索引
  • commit:缺省为true。是否提交操作请求
  • debug:缺省为false。debug模式,不会commit操作。如果同时需要commit,得带上commit=true参数
  • entity:缺省为所有的entity。可以指定某一个或多个entity
  • optimize:缺省为true。是否需要在完成操作后优化索引
  • reload-config:如果修改了配置文件,执行这个命令使它生效
  • status:返回各种统计数据、以及DIH的当前状态

至此,通过Mysql导入数据到Solr完成。

创建字段

在每次有新数据导入时,solr 会自动新增字段,但可能新增的的字段类型并不是想要的,这时可以通过手动修改。选中指定的core,在files文件夹下找到managed-schema文件,里面有样例字段的增加。可以自行参考修改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358