内容简介:研究了三天,因为想直接部署成分布式的,网上的各种教程都是太过久远的了,绕来绕去就死在配置文件里了所以先不想做分布式的问题了,先搭一个单机版的,压力上来了再装
使用solr搭建搜索服务器
前言
solr
是一个用 java
写的搜索服务器,支持分布式集群部署等各种特性,现在看来应该是
目前使用范围最广的搜索服务器了
研究了三天,因为想直接部署成分布式的,网上的各种教程都是太过久远的了,绕来绕去就死在配置文件里了
所以先不想做分布式的问题了,先搭一个单机版的,压力上来了再装 zookeeper
做分布式
安装
系统为 CentOS7
-
新建一个专门负责搜索服务的用户search,将 下载 的solr二进制包放在这个用户的家目录中,我这里是直接把本地压缩包扔进了服务器中
// 需要先建立一个专门负责搜索服务的账户: search useradd search // 在search家目录下新建服务文件夹 mkdir /home/search/search-service // 将本地代码上传到服务文件夹下 scp solr-7.4.0.zip root@testing:/home/search/search-service/
-
解压
solr-7.4.0.zip
// 进入目录 cd /home/search/search-service/ // 解压缩 unzip solr-7.4.0.zip // 将服务权限赋给search chown -R search:search /home/search/search-service/solr-7.4.0/server/
-
进入solr目录
cd solr-7.4.0/
-
新建
/usr/java
目录,在其中下载jdk
http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html mkdir /usr/java // 我是从本地将jdk上传到服务器中 scp jdk-8u181-linux-x64.tar.gz root@testing:/usr/java/
-
解压缩jdk包
cd /usr/java/ tar -zxvf jdk-8u181-linux-x64.tar.gz
-
配置环境变量
vim /etc/profile // 在最后添加环境变量,其中根据jdk版本修改JAVA_HOME和JRE_HOME #set java environment JAVA_HOME=/usr/java/jdk1.8.0_181 JRE_HOME=/usr/java/jdk1.8.0_181/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH
-
让修改生效
source /etc/profile
-
验证jdk是否安装成功
java -version // 如果有如下输出,证明安装成功 java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
-
启动solr节点
// 切换用户 su search // 进入solr根目录 cd /home/search/search-service/solr.7.4.0/ // 启动节点 bin/solr start (可以使用 -p 8983 指定端口,默认是8983端口)
创建core
core是搜索的核心,可以把它理解为集合,比如我需要搜索用户和帖子,那么就需要创建两个core: users
和 articles
bin/solr create -c users // 索引用户 bin/solr create -c articles // 索引文章
进入后台进行查看
// 获得外网ip curl ip.gs // 在浏览器中访问后台 http://ip:8983 // 服务搭建完成后要关闭外部端口,从内网中访问
API
我第一个用的搜索服务器是 xunsearch
,需要做很多配置,我以为搜素软件都这样…233
但是实际上 solr
不需要这么麻烦,如果仅仅是单机版,简单的搜索配置完全可以使用 http
请求来设置
我们假设 solr
的后台地址为: http://localhost:8983/solr
core
名为 my_collection
-
添加索引
-
添加单个
curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update/json/docs' --data-binary ' { "id": "1", "title": "Doc 1" }'
-
添加多个
curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary ' [ { "id": "1", "title": "Doc 1" }, { "id": "2", "title": "Doc 2" } ]'
-
要注意,仅仅添加后是无法搜索到文档的,还需要
commit
才可以
-
-
更新索引
curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary ' { "add": { "doc": { "id": "DOC1", "my_field": 2.3, "my_multivalued_field": [ "aaa", "bbb" ] } }, "add": { "commitWithin": 5000, "overwrite": false, "doc": { "f1": "v1", "f1": "v2" } }, "commit": {}, "optimize": { "waitSearcher":false }, "delete": { "id":"ID" }, "delete": { "query":"QUERY" } }'
可以看到,添加、commit删除等操作,都可以通过1次http请求来设置
-
查询
查询的路径为 http://{$url}/select?q=xxx&sort=xxx&start=xxx&rows=xxx
参数q为查询主体,sort为 排序 方式,rows为查询行数,start为查询起始位置
例如 users
表中有 name
字段,
-
我们需要查询
name
为silsuer
的用户那么 参数
q=name:silsuer
-
并且按照创建时间倒序查询
参数
q=name:silsuer&sort=created_at desc
-
每页查出10条数据,并且本次查第二页
参数start的计算方式为:
start=num*(page-1) -> start=10*(2-1)=10
参数为:
q=name:silsuer&sort=created_at desc&start=10&rows=10
-
注意:上面的参数中的空格冒号之类的,需要url编码后使用
以上就是 solr
的基本用法.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python学习手册
Mark Lutz / 侯靖 / 机械工业出版社 / 2009-8 / 89.00元
《Python学习手册(第3版)》讲述了:Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择。无论你是刚接触编程或者刚接触Python,通过学习《Python学习手册(第3版)》,你可以迅速高效地精通核心Python语言基础。读完《Python学习手册(第3版)》,你会对这门语言有足够的了解,从而可以在你所从事的任何应用领域中使用它。 《Python学习手册(......一起来看看 《Python学习手册》 这本书的介绍吧!