安装solr并创建core
下载指定solr版本
https://hub.docker.com/_/solr?tab=tags
运行
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
|
重启镜像
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_name
在field type
选择string
,
在 db_name
输入db_password
在field type
选择string
数据点击同步
访问http://localhost:8983/solr/#/new_core/dataimport//dataimport
执行 Execute