Docker 部署 Solr 极简教程

本贴最后更新于 1313 天前,其中的信息可能已经物是人非

solr 是 apache 旗下的一款开源,高效的搜索引擎,底层使用的 apache 的 lucene。这篇文章将以极简的方式搭建单机版的 solr。本教程旨在试玩与学习,生产环境搭建还请移步官方文档与相关社区。

我作为一个 solr 新手来搭建环境时,首先肯定是从官方文档的 quick start 开始啦,但是官方文档里面居然没有 docker 安装的教程,这对新时代的我来说是无法接受的。但是网上的各种 docker 安装教程不知道是因为 solr 镜像版本的原因还是其他原因,在我使用 data-import 的功能时,各种目录对不上,以及各种 sdk 和 api 介绍搞得我眼花缭乱,无用的信息太多只会让自己的脑子发热以及打击自信心。

所以在探索出我要的东西之后,决定写下这个教程只服务于 docker 安装以及 data-import 功能介绍和使用。如若与您所需要的东西不符,那也没必要看下去了。

在安装前请确保服务器能连接互联网与存在 docker 服务。

提示

本文只介绍 solr 的 docker 安装与 data-import 功能对于 postgresql 的使用。如需了解 solr 的 api 或者 sdk 的使用请移步官方文档与相关社区。

下载镜像

直接在 docker 里面下载官方镜像,以最新版为例。

docker pull solr

image.png

准备工作

  • 需要创建工作目录,方便我们挂载配置文件,用来测试 solr 的 data-import 功能

    image.png

创建data目录用来挂载配置文件 空的就行启动后docker会把容器内的配置文件复制出来
创建lib目录放置postgres-jdbc-driver的jar包
  • 准备 postgres-jdbc-driver 的 jar 包

    下载好 jar 包放入 lib 目录

image.png

启动容器

docker run -d -p 8983:8983 -v /srv/solr/lib:/data-lib -v /srv/solr/data/:/var/solr/data -t --privileged=true  --name solr solr

启动完成后已 root 用户进入 docker 容器

docker exec -it -u root solr bash

在容器里将/data-lib 目录下的 jdbc-driver 包 cp 到 /opt/solr-8.7.0/server/solr-webapp/webapp/WEB-INF/lib

在容器里将 /opt/solr-8.7.0/dist/solr-dataimporthandler-8.7.0.jar cp 到 /opt/solr-8.7.0/server/solr-webapp/webapp/WEB-INF/lib

image.png

到这里就可以打开 solr 的 admin 控制页面了

访问目标 ip 的 8983 端口 192.168.1.222:8983

image.png

创建一个新的索引库

docker exec -it --user=solr solr bin/solr create_core -c nap

由于我的配置文件挂载到宿主机上了,所以我们只要修改宿主机上的文件即可。

进入宿主机上新建立的 data 目录,这时候我们创建的索引库已经在文件夹里生成了

image.png

写入 solrconfig.xml

进入目标索引库的 conf 目录

image.png

在这个/selcet 所在的标签上面新添加一个标签

image.png

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

写入 data-config.xml

在 conf 目录添加 data-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource type="JdbcDataSource" driver="org.postgresql.Driver" url="jdbc:postgresql://192.168.1.54:5432/nap2"  user="postgres" password="r00tme"/>
  <document name="test">
        <entity name="test" pk="id"
 query="select id,created_at,deleted from test">
         <field column="id" name="id"/>
            <field column="created_at" name="created_at"/>
            <field column="deleted" name="deleted"/>
     </entity>
  </document>
</dataConfig>

[root@nap-222 conf]#

里面填上自己的数据源,支持多个和多种数据源,按规则配置即可

写入 managed-schema

image.png

添加相应的 field , id 默认不能删除,_version_也不能删除,删除 solr 启动会报错。

重启容器

docker restart solr

在 admin 控制台手动同步数据

image.png

查询数据

image.png

修改 postgres 源数据 solr 是否能触发同步?

修改数据源里的数据 solr 不会察觉同步,所以需要自己维护,例如 api 通知,或者使用 sorl 的插件可以设置定时同步与轮询。

总结

本文作为一个新手试玩教程应该还算是比较简单明了,如果按照此教程安装有不懂的也可以在评论区留言,欢迎交流,斧正。

  • Solr
    16 引用 • 22 回帖 • 1 关注
  • 搜索
    19 引用 • 118 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    483 引用 • 906 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...