solr 配置多个entity_solr安装

本文详细介绍了如何在solr环境下配置和启动服务,包括java8的安装、solr的下载与启动、核心的创建及ik分词器的引入。接着讲解了从数据库导入多个entity数据的步骤,包括数据配置、solrconfig和managed-schema的修改,以及数据查询的相关操作,如复合字段、范围限定和高亮设置。
摘要由CSDN通过智能技术生成

一. solr的环境: java8的安装

solr基于java, solr 8 以上的版本 需要java8的支持

二. solr的安装和启动

step 1: 获取下载包

镜像云 搜 apache -> lucene -> solr

https://mirrors.huaweicloud.com/apache/lucene/solr/8.6.1/solr-8.6.1.tgz

step2: 下载

cd /opt
wget https://mirrors.huaweicloud.com/apache/lucene/solr/8.6.1/solr-8.6.1.tgz

Step3: 解压并进入文件目录

tar xf solr-8.6.1.tgz
cd solr-8.6.1

Step5: 启动

solr默认启动端口8983. 注意在云服务器的网页安全组那块 暴露端口号
bin/solr start -force

Step6 - 检查运行状态

bin/solr status

如果运行正常 可以访问页面 http://localhost:8983/solr/

其他命令
重启 bin/solr restart -force
停止 bin/solr stop -all
查看版本 bin/solr version 日志文件位置: 知道日志文件在什么位置 非常非常重要
/opt/solr-8.6.1/server/logs

三. 导入数据

Step 1 - 创建core

在/opt/solr-8.6.1/server/solr 目录下创建一个文件夹 将来这个文件夹的名字需要和 admin页面创建的core的名称一致

cd /opt/solr-8.6.1/server/solr
mkdir deviceplan
# 然后为了保证核心能创建成功,将以下路径下的conf文件夹拷贝到你所创建的核心文件夹中
cp -rf /opt/solr-8.6.1/server/solr/configsets/sample_techproducts_configs/conf /opt/solr-8.6.1/server/solr/deviceplan/

接下来登陆SolrAdmin进行创建核心(前提要根据第三步启动solr)

访问:http://localhost:8983/solr    进行addcore

如果没有启动 cd /opt/solr-8.6.1 bin/solr start -force 启动solr

74c8ec65fe18102352575f5ebeaddb8e.png
注意:前两个方框里的内容要一致并且名称要和你创建的核心文件夹名称一致

然后点击add core ,核心就创建成功了

到这里solr就已经搭建好了

step 2 - 引入ik分词器

将ik分词器压缩包解压,解压后的文件上传至服务器

此命令需要windows里面执行 在 ik解压缩包所在的目录使用git bash here

scp -r ikanalyzer-solr5 ssh1:/opt
如果没有设置免密登录 ssh1替换为 root@公网ip

然后将解压出来的两个jar包放到以下路径:

/opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/lib

使用如下命令

cp -rf /opt/ikanalyzer-solr5/*.jar /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/lib
#使用如下命令查看是否复制成功
ls /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/lib | grep ik

其它的三个文件放到以下路径:

/opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/classes

如果没有这个classes文件夹 就去到这个目录(web-inf) 创建这个文件夹就ok
cd /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF
mkdir classes
cp -f /opt/ikanalyzer-solr5/IKAnalyzer.cfg.xml  /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/classes
cp -f /opt/ikanalyzer-solr5/stopword.dic  /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/classes
cp -f /opt/ikanalyzer-solr5/ext.dic  /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/classes
#查看是否复制成功
ls /opt/solr-8.6.1/server/solr-webapp/webapp/WEB-INF/classes

然后进行ik分词器的配置,编辑以下路径的managed-schema文件

如果是往solr里面添加第二个core 需要进行下面的配置
# 进入step 1 中你创建的那个代表core的文件夹
cd /opt/solr-8.6.1/server/solr/deviceplan/conf
vi managed-schema

将以下配置放到后边

<fieldType name="text_ik" class="solr.TextField">

    <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

    <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
不要越到 schema 标签外

到这里ik分词器就配置好了

step 3 - 从数据库导入数据

第一步:导入相关包:

在创建的核心目录下新建lib文件夹(如果有,无需建立),从Solr源码包的dist文件夹中导入两个solr-dataimporthandler包,以及一个mysql驱动包。

如果没有lib包 cd /opt/solr-8.6.1/server/solr/deviceplan mkdir lib
core目录, 核心目录
cd /opt/solr-8.6.1/server/solr/deviceplan/lib
cp -f /opt/solr-8.6.1/dist/solr-dataimporthandler-8.6.1.jar /opt/solr-8.6.1/server/solr/deviceplan/lib
cp -f /opt/solr-8.6.1/dist/solr-dataimporthandler-extras-8.6.1.jar /opt/solr-8.6.1/server/solr/deviceplan/lib
# ls命令 可以查看到导入的两个包
ls

#下载mysql驱动包
wget https://mirrors.huaweicloud.com/repository/maven/mysql/mysql-connector-java/8.0.21/mysql-connector-java-8.0.21.jar

第二步:编辑以下路径中的solrconfig文件(emms为自己所创建的核心文件夹):

cd /opt/solr-8.6.1/server/solr/deviceplan/conf
vi solrconfig.xml

在文件末尾添加以下内容

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
    </lst>
</requestHandler>
不要越过 /config 标签

然后在本目录下的data-config.xml进行如下编辑(没有则创建):

vi data-config.xml

添加如下内容

注意 必须有一个字段的名称为id 这是schema.xml文件中的强制要求
<?xml version="1.0" encoding="UTF-8" ?>

<dataConfig>
    <!-- db info -->
    <dataSource type="JdbcDataSource" 
        driver="com.mysql.cj.jdbc.Driver" 
        url="jdbc:mysql://112.123.156.213:3306/emms?useUnicode=true&amp;serverTimezone=Hongkong&amp;characterEncoding=UTF-8&amp;tinyInt1isBit=false" 
        user="root" password="123456"/>
    <document>
        <!-- document entity -->
        <entity name="news" query="SELECT * FROM elec_device_plan">
            <!-- db field map solr field -->
            <field column="DevPlanID" name="id"/>
            <field column="JctID" name="product_JctID"/>
            <field column="DevName" name="product_DevName"/>
            <field column="DevType" name="product_DevType"/>          
        </entity>
    </document>
</dataConfig>

然后在当前目录的managed-schema文件的末尾加入相应的类型映射

vi managed-schema

扩展: vi在一般模式下 按 shift + g 其实也就是按下大写的g 就会回到文件模块 按下gg 就会回到文件开头
<field name="product_JctID" type="string" indexed="true" stored="true" />
<field name="product_DevName" type="text_ik" indexed="true" stored="true"  />
<field name="product_DevType" type="string" indexed="true" stored="true"  />

重启 solr

cd /opt/solr-8.6.1
bin/solr restart -force

登陆http://localhost:8983/solr/,进入以下模块,执行excute就导入数据了

b51fb4e7c25dad0a4007d3ce45e92ff7.png

四. 查询数据

common q中的查询语法

*:*
# 字段名称: 字段关键值

但是一次只能在一个字段名称中写 肯定是不方便的

在schema中加入复合字段

<field name="product_multi_search" type="text_ik" indexed="true" stored="true" multiValued="true" />

<copyField source="product_name" dest="product_multi_search"/>
<copyField source="product_description" dest="product_multi_search"/>

fq添加范围限定

product_price:[10 TO 20]
product_price: 10

Sort

product_price desc
product_price asc

Fl 查询哪些字段

product_catalog, product_catalog_name

hl 高亮设置

#高亮字段
hl.fl
product_multi_search

hl.simple.pre
<em>

hl.simple.post
</em>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值