首页 docker

docker环境下solr使用记录

发布于: 2020-11-22

安装solr并创建core

下载指定solr版本

https://hub.docker.com/_/solr?tab=tags

1
docker pull solr:6.6.6

运行

1
docker run --name solr -p 8983:8983 -d solr

创建 solr 的 core

访问 http://localhost:8983/solr/#/~cores/new_core 点击 Add Core,输入name,instanceDir,这时候会弹出

1
Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/opt/solr/server/solr/new_core'

解决方案:将默认的配置信息拷贝到new_core目录下

1
2
docker exec -d solr mkdir -p  /opt/solr/server/solr/new_core
docker exec -d solr cp -r /opt/solr/server/solr/configsets/sample_techproducts_configs/conf/ /opt/solr/server/solr/new_core

重启镜像

1
docker restart solr

mysql数据导入到solr中

准备条件

1
2
3
docker exec -d solr  wget  -P /opt/solr/server/solr-webapp/webapp/WEB-INF/lib  https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.9/mysql-connector-java-5.1.9.jar

docker exec -d solr cp /opt/solr/dist/solr-dataimporthandler-6.6.6.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib

修改配置文件

1
2
docker cp solr:/opt/solr/server/solr/new_core/conf/solrconfig.xml .
vim solrconfig.xml

/opt/solr/server/solr/new_core/solrconfig.xml<config></config>标签里添加下面内容

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

添加完成之后

1
docker cp solrconfig.xml solr:/opt/solr/server/solr/new_core/conf/solrconfig.xml

在同一个目录下面新建一个 data-config.xml 并写入下面内容,这里 column 是指数据库中的列明,name 是指solr中显示的名称

1
2
3
4
5
6
7
8
9
<dataConfig>
<dataSource name="user" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/hexo" user="root" password="123456"/>
<document>
<entity name="user" query="select * from user" dataSource="source" >
<field column="db_name" name="name" />
<field column="db_password" name="password" />
</entity>
</document>
</dataConfig>

我是在宿主进行编辑需要拷贝到容器中

1
docker cp data-config.xml solr:/opt/solr/server/solr/new_core/conf/

mysql同步最后一步

访问 http://localhost:8983/solr/#/new_core/schema
点击 Add Field:
db_name输入db_namefield type选择string,
db_name输入db_passwordfield type选择string

数据点击同步

访问http://localhost:8983/solr/#/new_core/dataimport//dataimport
执行 Execute