进入Solr后台页面,选择一个核,点击Documents,进入Document管理标签:

一、添加Document
在Solr初探(2)——域管理中我们已经说过了,id是一个Document必须要包含的field,让我们新建一个Document,类型为JSON:
{
"id" : 1,
"name" : "jitwxs"
}
在查询页中点击Execute Query进行查询,就能看见我们添加的这个Doucment了:

二、更新Document
修改一个Document十分简单,只需要指定id,Solr就会先删除id为指定id的Document,然后将我们输入的Document保存起来,达到更新的目的(内部实现是先删后添)。
当我们输入:
{
"id" : 1,
"author":"jitwxs",
"content" : "哇哈哈哈"
}
重新查询:
{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json",
"_":"1523349939964"}},
"response":{"numFound":1,"start":0,"docs":[
{
"id":"1",
"author":"jitwxs",
"author_s":"jitwxs",
"content":["哇哈哈哈"],
"_version_":1597348563073892352}]
}}
三、删除Document
删除一个Document比较特殊,使用JSON无法实现,我们将Document类型修改为XML,将id为1的Document删除掉:
<delete>
<id>1</id>
</delete>
重新查询:
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json",
"_":"1523349939964"}},
"response":{"numFound":0,"start":0,"docs":[]
}
除了上面哪种方法,还可以指定删除条件:
<delete>
<query>id:1</query>
</delete>
因为可以始用正则表达式,那么举一反三,删除所有Document,就是:
<delete>
<query>*:* </query>
</delete>
四、导入数据
注:数据库文件使用宜立方商城的数据库,点击这里下载sql文件。
Step1:导入依赖包
在core1的目录下新建lib文件夹(如果有,无需建立),从Solr源码包的dist文件夹中导入两个solr-dataimporthandler包,以及一个mysql驱动包。

Step2:创建导入数据的Handler
编辑core1/conf目录下的solrconfig.xml文件,在文件末尾添加上对requestHander的配置:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

Step3:配置data-config.xml
我们刚刚在requestHander中指定了我们数据导入的配置文件,因此我们在solrconfig.xml的同级目录下,即core1/conf目录下新建data-config.xml文件:

编辑文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库信息 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/e3mall"
user="root" password="root"/>
<document>
<!-- document实体 -->
<entity name="item" query="SELECT id,title,sell_point,price FROM tb_item">
<!-- 数据库字段映射solr字段 -->
<field column="id" name="id"/>
<field column="title" name="item_title"/>
<field column="sell_point" name="item_sell_point"/>
<field column="price" name="item_price"/>
</entity>
</document>
</dataConfig>
配置文件总共两个部分,第一个部分是数据库连接信息,第二个部分是在document中建立了一个实体,参数一个是name,一个是sql查询语句,其内部对查询结果的每一项映射Solr的field。
Step4:配置field
在上一步中,我们将查询结果的每一项映射到了Solr的filed的上,但是除了id是存在的以外,其他都不存在,因此我们需要手动添加。
编辑managed-schema文件,在末尾新增相关的field,如果你理解了Solr初探(2)——域管理,这里的配置就很简单了。
解释:
(1)创建了item_title、item_sell_point、item_price三个域,其中前两个类型为IK分词器的类型,第三个为int类型。
(2)创建了item_keywords域,将item_title、item_sell_point拷贝到item_keywords中,便于搜索。(因为需求是从商品标题或商品卖点中查找)

Step5:重启服务
重启服务,选择core1的Dataimport标签页,此时右边就已经有内容了。

解释:
(1)/dataimport
第二步requestHandler中起的名字。
(2)clean
每次导入前,清空Document。
(3)Entity
第三步data-config.xml中配置的entity。
当我们点击Execute按钮后,过一会右边会提示索引创建成功,如下所示:

点击Query标签页,查询后可以看到数据已经被导入了:

五、查询Document
之前一直是用*.*查询所有,下面详细介绍下查询:

本文介绍了如何通过Solr后台管理页面进行文档的添加、更新、删除及查询操作,并详细讲解了如何利用Solr的数据导入功能从数据库中批量导入数据。
1419

被折叠的 条评论
为什么被折叠?



