solr9.2.1使用教程
参考solr官网: solr官网
1. 导入jar包并启动solr
1.1 导入相关jar包
1.1.1 数据同步连接配置jar包
把相关jar包到目录solr-9.2.1\server\lib下,
- 数据库相关jar包:(按使用的数据导入)
mysql: mysql-connector-j-8.0.32.jar
金仓: kingbase8-8.6.0.jar
达梦: DmJdbcDriver18.jar - 数据库同步统一配置jar包:
jetty-jndi-10.0.13.jar
jetty-plus-10.0.13.jar
jetty-util-10.0.13.jar
druid-1.2.17.jar
示例图:
1.1.2 数据同步与多变形检索jar包
把相关jar包拷贝到目录server\solr-webapp\webapp\WEB-INF\lib下,具体需要的jar包如下:
- 数据库相关jar包:(按使用的数据导入)
mysql: mysql-connector-j-8.0.32.jar
金仓: kingbase8-8.6.0.jar
达梦: DmJdbcDriver18.jar - 同步jar包:
data-import-handler-9.0.0.jar 下载 - 多边形检索jar包:
jts-core-1.18.2.jar (maven仓库下载)
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.18.2</version>
</dependency>
示例图:
1.2 启动或重启solr
- 进入bin目录运行命令:
Unix或MacOS:./solr start -force
关闭:进入bin目录执行:./solr stop -force
重启:进入bin目录执行:./solr restart -force
Windows:solr start,或solr.cmd start。
启动成功会提示:Started Solr server on port 8983. Happy searching!。
浏览器访问 http://localhost:8983/ 进入solr 后台如图:
2. 新建core并在core目录下新增及配置文件
- 新增core
进入solr的bin目录, 执行命令:./solr create -c appDevice -force
建立成功后提示:“Created new core ‘appDevice’”,并在…/solr-9.2.1/server/solr目录下自动生成一个文件夹appDevice
如图:
- 在生成的core目录下新增data-config.xml配置文件,参考如下:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库信息 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.1.186:3306/sioc_3_0"
user="emt" password="chinaemt"/>
<document>
<!-- document实体 -->
<entity name="app_device" pk="id"
query="SELECT
ad.id,
ad.name AS deviceName,
ad.code,
ad.number,
ad.type AS typeCode,
ad.longitude,
ad.latitude,
ad.address,
ad.stream_media_url AS streamMediaUrl,
ad.platform_id AS platformId,
ad.meeting_code AS meetingCode,
ad.status AS status,
ad.cgcs_longitude AS cgcsLongitude,
ad.cgcs_latitude AS cgcsLatitude,
CONCAT( ifnull(ad.cgcs_longitude,ad.longitude),' ',ifnull(ad.cgcs_latitude,ad.latitude)) AS GEO
FROM
app_device ad
WHERE ad.type is not null
AND ad.is_deleted = 0"
deltaQuery="SELECT ad.id FROM app_device ad where ad.type is not null and is_deleted = 0 and ad.update_time>'${dataimporter.last_index_time}'"
deletedPkQuery="SELECT ad.id FROM app_device ad where is_deleted != 0"
deltaImportQuery="SELECT
ad.id ,
ad.name AS deviceName,
ad.code,
ad.number,
ad.type AS typeCode,
ad.longitude,
ad.latitude,
ad.address,
ad.stream_media_url AS streamMediaUrl,
ad.platform_id AS platformId,
ad.meeting_code AS meetingCode,
ad.status AS status,
ad.cgcs_longitude AS cgcsLongitude,
ad.cgcs_latitude AS cgcsLatitude,
CONCAT( ifnull(ad.cgcs_longitude,ad.longitude),' ',ifnull(ad.cgcs_latitude,ad.latitude)) AS GEO
FROM
app_device ad
WHERE ad.id = '${dataimporter.delta.id}'">
<!-- 数据库字段映射solr字段 -->
<field column="id" name="id"/>
<field column="deviceName" name="deviceName"/>
<field column="code" name="code"/>
<field column="number" name="number"/>
<field column="longitude" name="longitude"/>
<field column="latitude" name="latitude"/>
<field column="cgcsLongitude" name="cgcsLongitude"/>
<field column="cgcsLatitude" name="cgcsLatitude"/>
<field column=