Solr简介Solr使用及SolrCloud搭建

article/2025/11/4 8:26:08

一、Solr简介

1、Solr是什么?

 1.1就是一个war项目

2、自己的项目如何Solr进行交互?

 2.1特定的API叫做SolrJ(底层其实就是HttpClient)

3、具备数据持久化功能

 3.1Solr中会存储需要进行搜索的数据

 3.2把所有的数据都初始化到Solr中.

4、Solr作用(什么时候使用Solr)

 4.1大量数据检索时使用Solr,能提升检索效率.

5、Solr是基于索引进行查询的.

 5.1顺序查询:从内容的最开始找到内容为止

 5.2反向键索引:

  5.2.1把内容中进行拆分.

6、国内实现检索的常用方案.

 6.1Apache Lucene:实现检索的解决方案(Solr就是基于Lucene)

 6.2Baidu API:

 6.3Google API:

Solr单机版搭建

步骤很简单在这里就不在详细介绍了,把下载好的solr部署在tomcat底下,启动tomcat就可以看到可视化管理页面了(应为它是个web项目,有个页面很正常)

 

二、IK Analyzer中文拆词器

1、Solr默认对中文拆词功能支持不好.

  1.1解决方案:使用IK Analyzer拆词器

2、配置IK Analyzer时本质实际上是给Solr新建了一个fieldType,只要某个属性(field)是这个类型,这个属性就会使用IK Analyzer进行拆词

 2.1配置fieldType。需要在solrhome/collection/conf/schema.xml中配置.。添加一个fieldType(这里为止不受限制的一般和其它放一块就可以了

<fieldType name="text_ik" class="solr.TestField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
//完之后自己定义一个属性
<field name="name" type="text_ik" indexed="true" stored="true"/>

 完之后保存测试看一下,我们看到以下结果

 

三、Solr管理界面的Documents菜单功能

1、包含了solr数据的新增、删除、修改三个功能

2、数据支持很多种格式:json或xml等

3、新增时,必须要包含对id的新增

4、每次新增,Solr会新建一个SolrDocument对象,这个对象存储新增内容

 4.1把SolrDocument理解成实体类

 4.2包含了Solr的schema.xml中配置的所有field

 4.3新增时有什么属性,最终显示时就有什么属性

5、把DocumentType以xml方式举例

 5.1新增

<doc>
<field name="id">change.me</field>
<field name="title">change.me</field>
</doc>

  5.2修改:只要id已经存在执行修改(根据id覆盖)

  5.3删除:

删除全部
<delete>
<query>*:*</query>
</delete>
单个删除
<delete>
<id>id</id>
</delete>
<commit/>

四、管理界面quey菜单功能(查询)

1、q:表示查询条件

 1.1*:*查询全部

 1.2字段:值。把值按照对应的分词器拆分查询

 1.3字段:“值”。带双引号的不会拆词查询

 1.4在schema.xml中配置复合属性,这个复合属性可以包含多个其他属性的值

   1.4.1在schema.xml添加下面内容

<field name="personclass" type="text_ik" indexed="true" stored="true" multiValued="true"/>
//zhansan lisi有的personclass也有
<copyField source="zhansan" dest="personclass"/>
<copyField source="lisi" dest="personclass"/>

2、fq :再加一个条件,就是并列条件

3、sort: 排序 字段 asc  或者 字段 desc

4、start rows :分页,查询限制条数,默认十条

5、fl:只显示那些属性的值

6、df :default field默认的查询字段,一般默认指定。

7、wt:返回结果格式

还有高亮功能一些等等,就不一一说了,完之后对应这些功能的代码如下:

package com.bjsxt;import java.io.IOException;
import java.util.List;
import java.util.Map;import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;/*** 增加删除修改都需要提交事务* @author Administrator**/
public class Demo {/*** 新增5* @throws SolrServerException* @throws IOException*/public void testInsert() throws SolrServerException, IOException{SolrClient client = new HttpSolrClient("http://192.168.249.131:8080/solr/");SolrInputDocument doc = new SolrInputDocument();doc.addField("id", "005");
//		doc.addField("bjsxt", "java和大数据培训");doc.addField("bjsxt1", "大数据4");client.add(doc);client.commit();}public void testDelete() throws SolrServerException, IOException{SolrClient client = new HttpSolrClient("http://192.168.249.131:8080/solr/");client.deleteById("001");client.commit();}@Testpublic void testQuery() throws SolrServerException, IOException{SolrClient client = new HttpSolrClient("http://192.168.249.131:8080/solr/");//可视化界面左侧条件SolrQuery params = new SolrQuery();//设置qparams.setQuery("bjsxtall:*");//设置分页//从第几条开始查询,从0开始params.setStart(0);//查询几个params.setRows(10);//启动高亮params.setHighlight(true);//设置高亮列params.addHighlightField("bjsxt");//设置前缀params.setHighlightSimplePre("<span style='color:red;'>");//设置后缀params.setHighlightSimplePost("</span>");//相当于点击查询按钮, 本质,向solr web服务器发送请求,并接收响应. query对象里面包含了返回json数据QueryResponse response = client.query(params);Map<String, Map<String, List<String>>> hh = response.getHighlighting();//取出docs{}SolrDocumentList solrList = response.getResults();for (SolrDocument doc : solrList) {System.out.println(doc.getFieldValue("id"));System.out.println("未高亮:"+doc.getFieldValue("bjsxt"));Map<String, List<String>> map = hh.get(doc.getFieldValue("id"));System.out.println(map);//list可能为nullList<String> list = map.get("bjsxt");System.out.println(list);if(list!=null&&list.size()>0){System.out.println("高亮:"+list.get(0));}else{System.out.println("没有高亮内容");}System.out.println(doc.getFieldValue("bjsxt1"));}}}

五、SolrCloud

1、Solr是一个web项目,需要放入tomcat里,依赖多个tomcat,让多个tomcat之间能够通信。

2、 需要借助 zookeeper 实现 tomcat 直接通信
3.、结构图

使用zookeeper可以进行管理solr集群,以下zk安装教程

1、上传压缩包到/usr/local/tmp下,并解压.

2、在/usr/local下新建文件夹zookeeper

# mkdir /usr/local/zookeeper

 3、把解压的所文件夹复制到zookeeper下,并命名为zk1

# cp -r /usr/local/temp/zookeeper-3.4.8 /usr/local/zookeeper/zk1

 4、在zk1下新建文件夹data

 5、在data下新建文件myid,里面写上1

# vim myid

 6、进入到zk1/conf下把zoo_sample.cfg复制一份叫做zoo.cfg

 7、编辑zoo.cfg内容,设置dataDIR为data文件夹,并在文件最下面添加下面内容

server.1=192.168.213.130:2688:3888server.2=192.168.213.130:2689:3889server.3=192.168.213.130:2690:38907.1 server.1 中的1 是myid的内容7.2 2688,2689,2690 是zookeeper内部端口7.3 3888,3889,3890 是leader端口

 8、把zk1复制两份,分别叫做zk2,zk3,并修改myid的值为2,3 修改zoo.cfg中dataDIR和clientPort

 9、启动三个zookeeper

# ./zkServer.sh start

 10、查看状态

# ./zkServer.sh status

Solrcloud安装部署

注:前提是已经安装完zookeeper

1、复制/usr/local/solr/tomcat,在复制3份,分别叫做tomcat2,tomcat3,tomcat4

2、修改tomcat/conf/server.xml的端口号,每个文件都需要修改3处.

3、复制/usr/local/solr/solrhome再复制3份,分别叫做solrhome2,solrhome3,solrhome4

4、修改tomcat中solr项目的web.xml中<env-entity-value>为对应的solrhome路径

5、修改4个tomcat的tomcat/bin/startup.sh,在最上面加上,否则启动时都启动一个


export CATALINA_HOME=/usr/local/solr/tomcat3export CATALINA_BASE=/usr/local/solr/tomcat3

6、在第一个tomcat的tomcat/bin/catalina.sh的最上面添加

JAVA_OPTS="$JAVA_OPTS -DzkHost=192.168.213.130:2181,192.168.213.130:2182,192.168.213.130:2183 -Dbootstrap_confdir=/usr/local/solr/solrhome/collection1/conf -Dcollection.configName=collection1 -DnumShards=2 -DreplicationFactory=2"-DzkHost表示zookeeper地址-Dbootstrap_confdir表示对某个solr实例下的配置统一管理-Dcollection.configName表示配置文件别名,一般与实例名称相同。-DnumShards表示分片数量-DreplicationFactor表示每个分片中服务数量(2表示一主一备)

7、在另外3个tomcat/bin/catalina.sh最上面添加

JAVA_OPTS="$JAVA_OPTS -DzkHost=192.168.213.130:2181,192.168.213.130:2182,192.168.213.130:2183 -DnumShards=2 -DreplicationFactory=2"

8、修改4个solrhome的solrhome下的solr.xml

 9、关闭防火墙

10、启动tomcat

11、观察结果,出现了cloud项,成功页面如下

下面是对SolrCloud操作的代码

package com.bjsxt;import java.io.IOException;
import java.util.List;
import java.util.Map;import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;/*** 增加删除修改都需要提交事务* @author Administrator**/
public class Demo {/*** 新增5* @throws SolrServerException* @throws IOException*/@Testpublic void testInsert() throws SolrServerException, IOException{CloudSolrClient client = new CloudSolrClient("192.168.249.131:2181,192.168.249.131:2182,192.168.249.131:2183");client.setDefaultCollection("collection1");SolrInputDocument doc = new SolrInputDocument();doc.addField("id", "005");
//		doc.addField("bjsxt", "java和大数据培训");doc.addField("bjsxt1", "大数据4");client.add(doc);client.commit();}public void testDelete() throws SolrServerException, IOException{CloudSolrClient client = new CloudSolrClient("192.168.249.131:2181,192.168.249.131:2182,192.168.249.131:2183");client.setDefaultCollection("collection1");client.deleteById("001");client.commit();}public void testQuery() throws SolrServerException, IOException{CloudSolrClient client = new CloudSolrClient("192.168.249.131:2181,192.168.249.131:2182,192.168.249.131:2183");client.setDefaultCollection("collection1");//可视化界面左侧条件SolrQuery params = new SolrQuery();//设置qparams.setQuery("bjsxtall:*");//设置分页//从第几条开始查询,从0开始params.setStart(0);//查询几个params.setRows(10);//启动高亮params.setHighlight(true);//设置高亮列params.addHighlightField("bjsxt");//设置前缀params.setHighlightSimplePre("<span style='color:red;'>");//设置后缀params.setHighlightSimplePost("</span>");//相当于点击查询按钮, 本质,向solr web服务器发送请求,并接收响应. query对象里面包含了返回json数据QueryResponse response = client.query(params);Map<String, Map<String, List<String>>> hh = response.getHighlighting();//取出docs{}SolrDocumentList solrList = response.getResults();for (SolrDocument doc : solrList) {System.out.println(doc.getFieldValue("id"));System.out.println("未高亮:"+doc.getFieldValue("bjsxt"));Map<String, List<String>> map = hh.get(doc.getFieldValue("id"));System.out.println(map);//list可能为nullList<String> list = map.get("bjsxt");System.out.println(list);if(list!=null&&list.size()>0){System.out.println("高亮:"+list.get(0));}else{System.out.println("没有高亮内容");}System.out.println(doc.getFieldValue("bjsxt1"));}}}

 


http://chatgpt.dhexx.cn/article/YwKm7bG0.shtml

相关文章

solrcloud导入mysql数据配置

最简单的solr7集群搭建(不需要tomcat) 添加jar (三个节点都要&#xff09; 复制solr解压目录中dist下的solr-dataimporthandler-7.5.0.jar solr-dataimporthandler-extras-7.5.0.jar 复制到WEB-INF/lib下 添加mysql-connection jar包到WEB-INF/lib下&#xff0c;我这里是mysq…

Solr+Zookeeper 搭建搜索集群SolrCloud

目录 一、简介 1、SolrCloud是个什么玩意&#xff1f; 2、Solr是个什么玩意&#xff1f; 3、zookeeper是个什么玩意&#xff1f; 4、实现负载均衡的方式&#xff1a; (Nginx、Redis槽、Zookeeper) 二、SolrCloud的结构 1、物理结构 2、逻辑结构 三、SolrCloud的搭建(3…

solrCloud分布式检索流程

好久没写solr的文章了&#xff0c;刚好需要在公司作个分享&#xff0c;先总结一些先。 引用请声明原文&#xff1a;http://blog.csdn.net/duck_genuine/article/details/17014991 solrCloud分布式检索主要流程如下&#xff1a; 搜索 video&#xff0c;“美女斗秀场” 取按…

solr全文检索技术学习(三)-搭建SolrCloud集群问题总结

什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案&#xff0c;当你需要大规模&#xff0c;容错&#xff0c;分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的&#xff0c;当索引量很大&#xff0c;搜索请…

对SolrCloud集群Collection进行手动二次Sharding

我们已经基于SolrCloud 4.3.1Tomcat 7搭建了搜索服务器集群&#xff0c;一个Collection对应3个节点上的3个分片&#xff08;Shard&#xff09;&#xff0c;同时包含对应分片的副本&#xff08;Replica&#xff09;&#xff0c;此时&#xff0c;该Collection一共有6000万左右Doc…

Solr SolrCloud相关概念

Solr支持服务器的分布式集群部署&#xff0c;即SolrCloud。在SolrCloud中&#xff0c;一个索引可以被分布到不同的服务器&#xff0c;即不同的node&#xff0c;所有的这些node组成一个collection&#xff0c;并且充分考虑了高可靠性和容错的设计。 SolrCloud使用zookeeper来管理…

SolrCloud概述

在Lucene/Solr的SVN trunk中的SolrCloud已经可用, 在即将发布的4.0版本中将正式包含. 目前SolrCloud已经成熟, 可以支持分布式索引和分布式搜索. 下面是我们一个项目采用新的SolrCloud的部署结构图: 看起来是否非常简单? 下面我们看看内部的一些实现细节. SolrCloud功能和架…

solr8.9部署solrcloud

安装solr tar xf solr-8.9.0.tgz cd solr-8.9.0 ./bin/install_solr_service.sh /root/solr-8.8.2.zip -d /data/solr -u solr -n # /root/solr-8.8.2.zip 指定tar包 # -d: 指定solr可写目录&#xff0c;solr数据文件、日志、pid文件、索引会写入到此目录下。默认/var/solr #…

搭建SolrCloud的详细步骤

###一、需求 SolrCloud(solr 云)是Solr提供的分布式搜索方案&#xff0c;当你需要大规模&#xff0c;容错&#xff0c;分布式索引和检索能力时使用 SolrCloud。 当一个系统的索引数据量少的时候是不需要使用SolrCloud的&#xff0c;当索引量很大&#xff0c;搜索请求并发很高&a…

SolrCloud Collection 创建

环境版本: CDH 5.12.0; Solr 4.10.3 CDH搭建SolrCloud集群十分方便,添加服务->solr->选择主机->next即可 在SolrCloud中,跨多个节点的索引分割称为集合(collection),见下图: [root@DXHY-YFEB-01 solr]# pwd /var/lib/solr [root@DXHY-YFEB-01 solr]# mv Invoi…

solrcloud集群搭建

什么是SolrCloud 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案&#xff0c;当你需要大规模&#xff0c;容错&#xff0c;分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的&#xff0c;当索引量很大&#xff0c…

Apache SolrCloud介绍及安装

SolrCloud介绍 在我们应用还很渺小的时候&#xff0c;一台Solr服务器能完全胜任这份工作&#xff0c;随着我们应用慢慢长大&#xff0c;访问也越来越多&#xff0c;一台Solr服务器的弊病也逐渐显现如查询变慢了&#xff0c;机器宕机就无法继续提供服务&#xff0c;于是乎我们引…

solr集群(solrcloud)部署搭建

简介 SolrCloud 旨在提供一个高度可用、容错的环境&#xff0c;用于跨多个服务器分发索引内容和查询请求。它是基于 Solr 和Zookeeper的分布式搜索方案&#xff0c;它的主要思想是使用 Zookeeper作为集群的配置信息中心。它是灵活的分布式搜索和索引&#xff0c;无需主节点来分…

SolrCloud之solr单机搭建使用

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 随着互联网技术的不断迭代更新&#xff0c;分布式技术也越…

SolrCloud 搭建之 zookeeper搭建

系列文章目录 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 随着互联网技术的不断迭代更新&#xff0c;分布式技术也越来越重要&#xff0c;很多人都开启了学习模式&#xff0c;本文就介绍了solr搭建及使用的基础…

solrCloud搭建及演化

系列文章目录 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 solr是一个web项目&#xff0c;上一节我们部署了solr的单机版&#xff0c;实际上solrcloud是多个tomcat的组合&#xff0c;将多个tomcat部署之后&#…

SolrCloud原理

本文为调研分布式检索系统的笔记整理&#xff0c;之前调研sphinx和coreseek的时候&#xff0c;发现国内的博客&#xff0c;还是讲怎么配置怎么安装多&#xff0c;原理性的东西并不多。本文为&#xff1a;官网文档阅读笔记&#xff08;有些会附带上文档英文原文&#xff0c; 如果…

SolrCloud简介

原文地址&#xff1a;http://www.chepoo.com/solrcloud-introduction.html 一.简介 SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署&#xff0c;例如单机方式&#xff0c;多机Master-S…

Solr云(SolrCloud)

SolrCloud只是作为Solr的一个突出特性&#xff0c;这个特殊的特性能够实现分布式功能。利用这个功能&#xff0c;你能建立高效、容错的Solr服务器群。这对于访问量规模巨大的企业级应用来说&#xff0c;使用SolrCloud能实现高有效性、容错性、分布式索引和搜索功能。 1 了…

solrcloud入门详细使用教程

一、solrcloud介绍 solrcloud是solr提供的分布式的搜索方案&#xff0c;当我们需要大规模&#xff0c;容错&#xff0c;分布式搜索和索引时使用solrcloud。当系统的索引量少&#xff0c;请求并发性低的时候不需要用到solrcloud。solrcloud是基于solr和zookeeper的分布式搜索方案…