首先我们需要进入solr中
docker exec -it --user root solr /bin/bash
这里使用root用户进入,直接进入是solr用户,因为需要创建文件 所以使用root用户进入
下载vim
apt-get update && apt-get -yq install vim
cd server
cd solr
创建文件夹
mkdir test
cd test
复制配置文件
cp -r /opt/solr/server/solr/configsets/_default/conf /opt/solr-8.1.1/server/solr/test
创建数据存储文件夹
mkdir data
因为是用root用户创建的 需要授权给solr
chown -R solr:solr /opt/solr-8.1.1/server/solr/test
准备工作完成后在视图中创建core
创建成功后
cd /opt/solr-8.1.1/server/solr/test
touch data-config.xml
data-config.xml 主要是连接数据库把数据导入到solr中
vim data-config.xml
添加以下信息
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://IP:端口/数据库名?autoReconnect=true" user="用户名" password="密码" />
<document>
<entity name="haLock" query="SELECT * FROM 表名" deltaQuery="SELECT * FROM 表名">
<field column="数据库中列名" name="自定义名" />
<field column="数据库中列名" name="自定义名" />
</entity>
</document>
</dataConfig>
其中<field column="数据库中列名" name="自定义名" /> 可以有多列
然后编辑conf目录中的managed-schema文件(managed-schema 就是 旧版的schema.xml文件) 主要是配置solr的数据展示 分词等
在<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
下面添加自己的字段 一般是data-config.xml中定义多少个field ,则在managed-schema也要展示多少个
type是solr定义的类型 有pint -int,string-String等
indexed是决定 你的content是否在solr中建立索引,也就是是否分词,
而 stored的意思是 你是否要将该字段以及所对应的值存储到solr服务器
docValues 一般为false,详情查看以下博客解析
https://blog.csdn.net/asdfsadfasdfsa/article/details/71576750
然后要配置 requestHandler的位置
cd /opt/solr-8.1.1/server/solr/test/conf
vim solrconfig.xml
找到已有的requestHandler 在下面添加
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
然后reload
就可以进行导入数据操作了
小技巧 如果在vim中编辑 managed-schema太麻烦 可以使用
新建一个窗口 使用docker cp 命令
将solr 中的 managed-schema文件 和data-config.xml拉到本地
docker cp solr:/opt/solr-8.1.1/server/solr/test/conf/managed-schema .
docker cp solr:/opt/solr-8.1.1/server/solr/test/data-config.xml .
然后拉到windows环境下编辑,编辑完成后再cp到solr中
常见问题
1.
Error CREATEing SolrCore 'goods_dept_goods_view': Couldn't persist core properties to /opt/solr/server/solr/goods_dept_goods_view/core.properties : /opt/solr/server/solr/goods_dept_goods_view/core.properties
一般是权限问题
chown -R solr:solr goods_dept_goods_view/
2.
这种错误是因为你没有在solrconfig.xml 文件中配置data-config.xml 的指定位置,即你的core 下的conf文件夹中的solrconfig.xml 文件并打开,在里边加入如下内容,放置的位置你可以放到其他requestHandler 旁边:
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>