[超级连接:Linux+Solr+Zookeeper系列-序章]
本文主要Solr包自带的mail示例,对Solr Admin后台功能进行讲解。
1.环境
- Ubuntu 16.04 LTS
- jdk1.8.0_161
- solr-6.6.0
关于Solr+Zookeeper的集群配置参加上一章
2.通过zookeeper上传solr自带示例mail
Solr安装包自带的示例位于/usr/local/solr-6.6.0/example/example-DIH/solr/目录下。
将mail目录拷贝至solr/server/solr/configsets/目录下。
//拷贝配置至solr1
cp -r /usr/local/solr-6.6.0/example/example-DIH/solr/mail /usr/local/solrcloud/solr1/server/solr/configsets/
//拷贝配置至solr2
cp -r /usr/local/solr-6.6.0/example/example-DIH/solr/mail /usr/local/solrcloud/solr2/server/solr/configsets/
//拷贝配置至solr3
cp -r /usr/local/solr-6.6.0/example/example-DIH/solr/mail /usr/local/solrcloud/solr3/server/solr/configsets/
通过zookeeper上传配置
//通过zookeeper上传solr1的配置
/usr/local/solrcloud/solr1/server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -confdir /usr/local/solrcloud/solr1/server/solr/configsets/mail/conf -confname mail -z192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
//通过zookeeper上传solr2的配置
/usr/local/solrcloud/solr1/server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -confdir /usr/local/solrcloud/solr2/server/solr/configsets/mail/conf -confname mail -z192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
//通过zookeeper上传solr3的配置
/usr/local/solrcloud/solr1/server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -confdir /usr/local/solrcloud/solr3/server/solr/configsets/mail/conf -confname mail -z192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
命令说明:
zkcli.sh
:solr自带的zookeeper上传脚本--cmd upconfig
:表示这条 命令用于 上传配置-confdir /usr/local/solrcloud/solr1/server/solr/configsets/mail/conf
:表示配置目录所在-confname mail
:表示上传的配置的配置名-z192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
:表示zookeeper服务地址
将上传到ZooKeeper中配置文件与collection相关联
/usr/local/solrcloud/solr1/server/scripts/cloud-scripts/zkcli.sh -cmd linkconfig -collection mail -confname mail -z192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
命令说明:
zkcli.sh
:solr自带的zookeeper上传脚本--cmd linkconfig
:表示这条 命令用于 将上传到ZooKeeper中配置文件与collection相关联-collection mail
:表示collection的名称-confname mail
:表示配置的配置名-z192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
:表示zookeeper服务地址
重启服务
//重启solr1
/usr/local/solrcloud/solr1/bin/solr restart -c -p 8983 -z 192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
//重启solr2
/usr/local/solrcloud/solr2/bin/solr restart -c -p 8984 -z 192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
//重启solr3
/usr/local/solrcloud/solr3/bin/solr restart -c -p 8985 -z 192.168.71.128:2181,192.168.71.128:2182,192.168.71.128:2183
测试服务
在浏览器中访问:http://192.168.71.128:8983/solr/,进入Solr Admin,页面如下:
3.导入数据与查询
下面对mail集合进行简单操作,以便能够了解Solr的基本操作。
mail集合刚刚建立好,其内是没有数据的。为了便于演示,我们首先进行数据的手动导入。
查看数据结构
- 在左侧菜单中点击Collection Selector下拉选择mail。
- 在子下拉菜单中选择Files。
- 在中间的文件树中点击managed-schema。
- 在managed-schema进行下拉查看,找到了字段信息,如下:
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="content" type="text_general" indexed="true" stored="true" multiValued="true"/>
<!-- catchall field, containing all other searchable text fields (implemented
via copyField further on in this schema -->
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
<field name="messageId" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="from" type="string" indexed="true" stored="true" omitNorms="true"/>
<field name="sentDate" type="date" indexed="true" stored="true"/>
<field name="xMailer" type="string" indexed="true" stored="true" omitNorms="true"/>
<field name="allTo" type="string" indexed="true" stored="true" omitNorms="true" multiValued="true"/>
<field name="flags" type="string" indexed="true" stored="true" omitNorms="true" multiValued="true"/>
<field name="attachment" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="attachmentNames" type="string" indexed="true" stored="true" omitNorms="true" multiValued="true"/>
编写JSON字符串
根据上述的字段结构,编写JSON字符串:
{"messageId":"0001",
"subject":"测试邮件",
"from":"李四",
"sentDate":"2017-01-22T17:33:18.333Z",
"xMailer":"163",
"allTo":"张三",
"flags":"李四",
"attachment":"今天天气不错",
"attachmentNames":"附件名称"}
导入JSON字符串
- 在左侧菜单中点击Collection Selector下拉选择mail。
- 在子下拉菜单中选择Documents。
- 将JSON字符串粘贴至Documents文本域中,点击Submit Document按钮,进行数据导入。
- 如果右侧显示success,则表示导入成功。
查询导入的数据
- 在左侧菜单中点击Collection Selector下拉选择mail。
- 在子下拉菜单中选择Query。
- 在q文本域中录入查询条件messageId:0001 AND subject:测试邮件,即:查询messageId=1并且subject=测试邮件的邮件。
- 点击Execute Query进行查询,右侧会立刻显示查询结果。
至此,对Solr的简单操作演示完毕。
4.Solr Admin简介
之前的演示只是为了让我们对Solr的后台操作有一个整体印象。
下面依次对Solr Admin的界面进行整体性的简单介绍;
1.Dashbord:仪表盘
仪表盘:显示Solr服务的基本信息,包括:实例信息、版本信息、JVM信息、硬件信息和内存信息,如下图所示。
2.Logging:日志
日志:显示和配置Solr服务的日志,可以通过点击右侧的日志级别进行调节,如下图所示:
3.Cloud:SolrCloud
SolrCloud:是对Solr集群配置的描述,分为三种展示类型:文件树形、普通图形以及星形图形,如下图所示:
4.Collections:集合信息
集合信息:展示了已经上传配置的集合信息,包括分片、集群节点情况等。可以进行集合的添加、重载和删除操作。
5.Java Properties:Java属性
Java属性:展示了Java相关属性,包括:编码方式、JRE配置、Solr安装目录、时区等等,具体如下图所示:
6.Thread Dump:线程回收站
线程回收站:显示了线程的运行情况。
7.Collection Selector:集合选择器
可以在**Collection Selector
**中下拉选择一个集合,对这个集合进行具体操作。
下面以**mail
**为例。
7.1.Overview:集合概述
集合概述:展示了这个集合的基本情况,包括:配置名称、分片信息、集群节点信息等,如下所示:
7.2.Analysis:分词
分词器:可以进行手动分词,下面以中华人民共和国为例:
自带的分词器并不理想,后续章节会讲解如何配置自定义分词器。
7.3.Dataimport:数据导入
数据导入:可以手动的进行数据的全量导入和增量导入。
后续章节会对数据导入进行详细介绍。
7.4.Documents:文章导入
文章导入:可以手动的进行文章导入。下面以**mail
**这个集合的相应字段进行Json格式的文章导入:
7.5.File:配置文件
配置文件:显示了当前集合的配置文件,主要的文件有:
- solrconfig.xml:当前集合的主配置文件,配置过滤器、分词器等等,后续章节会细说。
- managed-schema:数据库的字段配置文件,如字段名称、是否唯一、字段类型、是否索引等等。
- stopword.txt:停用词,如**
的
、也
**等,即不进行分词的词。
后续还会追加一些配置,到时候在详细说明。
7.6.Query:查询/检索
查询/检索:可以进行Solr搜索,页面如下:
参数说明
参数 | 简介 |
---|---|
q | 查询的关键字,此参数最为重要,例如,q=id:1 ,默认为q=*:* , |
fq | (filter query)过虑查询,提供一个可选的筛选器查询。返回在q查询符合结果中同时符合的fq条件的查询结果,例如:q=id:1&fq=sort:[1 TO 5] ,找关键字id 为1 的,并且sort 是1 到5 之间的。 |
start | 返回结果的第几条记录开始,一般分页用,默认0 开始 |
rows | 指定返回结果最多有多少条记录,默认值为10 ,配合start 实现分页 |
fl | 指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl=id,title,sort |
sort | 排序方式,例如id desc 表示按照id 降序,建议一般的查询都用score desc 即匹配度降序排序 |
wt | (writer type)指定输出格式,有xml,json,php等,此参数一般不用 |
df | 默认的查询字段,一般默认指定。此参数一般不用 |
qt | (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。此参数一般不用 |
indent | 返回的结果是否缩进,默认关闭,用 indent=true on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。此参数一般不用 |
version | 查询语法的版本,建议不使用它,由服务器指定默认值。此参数一般不用 |
运算符
符号 | 含义 |
---|---|
: | 指定字段查指定值,如返回所有值*? |
? | 表示单个任意字符的通配 |
* | 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号) |
~ | 表示模糊检索,如检索拼写类似于roam的项这样写:roam将找到形如foam和roams的单词;roam0.8,检索返回相似度在0.8以上的记录。 |
AND 、|| | 布尔操作符 |
OR 、&& | 布尔操作符 |
NOT 、! 、- | 排除操作符,不能单独与项使用构成查询 |
+ | 存在操作符,要求符号+后的项必须在文档相应的域中存在 |
( ) | 用于构成子查询 |
[] | 包含范围检索,如检索某时间段记录,包含头尾,date:[201507 TO 201510] |
{} | 不包含范围检索,如检索某时间段记录,不包含头尾date:{201507 TO 201510} |
7.7.Schema:数据结构
数据结构:在这里可以对字段进行配置和查看。