solr搭建和测试 windows版

1 篇文章 0 订阅

准备:solr启动包(windows)

下载链接: https://download.csdn.net/download/qq_41833449/12786525.

流程:

1、solr压缩包
2、将mysql连接jar,放到solr解压之后的server\solr-webapp\webapp\WEB-INF\lib
3、server\solr 新建一个core(myCore)
4、将同目录下的 configsets\sample_techproducts_configs 下的conf考到mycore里面
5、到bin目录下启动solr (solr start /solr start -p 8800 )
6、页面上添加一个core Admin (logCore)
7、到logCore/conf编辑managed-schema

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
替换成
 <field name="id" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
<uniqueKey>id</uniqueKey>	
替换成
<uniqueKey>logId</uniqueKey>
	//indexed=是否索引,主键必须索引
   <field name="logId" type="string" indexed="true" stored="true"/>
  <field name="content" type="string" indexed="true" stored="true"/>
  <field name="createTime" type="string" indexed="false" stored="true"/>

8、到myCore/conf新建solr-data-config.xml

<?xml version="1.0" encoding="UTF-8"?>
	<dataConfig>
		<dataSource type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" 
			url="jdbc:mysql://127.0.0.1/demand?serverTimezone=CTT"  user="root" password="123456"  />
		<document name="messages">
			<entity name="message" transformer="ClobTransformer" query="select log_id , content , create_time from l_logs  " >
				<field column="log_id" name="logId"/>
				<field column="content" name="content"/> 
				<field column="create_time" name="createTime"/> 
			</entity>
		</document>
	</dataConfig>

9、到logCore/conf修改solrconfig.xml
在/select上添加


solr-data-config.xml


10、将\solr-8.6.1\dist下面的jar 拷贝到server\solr-webapp\webapp\WEB-INF\lib
11、页面是导入数据,然后查询 查看日志如果出现内存溢出 , 重启添加参数 solr start -m 2g(指定内存大小2g)
12、还有问题直接去看日志

简单测试:

content全部用uuid存值,对比200W条数据:
1、mysql总条数mysql总条数
2、mysql模糊查询,需要2s左右时间
模糊查询结果
3、solr总条数(直接导入的mysql数据)
在这里插入图片描述
4、solr的效率0.43s

solr查询效率

整合springboot:

1、maven

    <!--集成solr搜索引擎客户端-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-solr</artifactId>
    </dependency>

2、配置文件
##solr服务器地址和core的名称
spring.data.solr.host=http://localhost:8800/solr/logCore
3、代码

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.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("test")
public class Test {

    @Autowired
    private SolrClient solrClient;

    @RequestMapping("test")
    public  List<ILog> test(String content ,int pageNo ,int pageSize ){
        SolrQuery query = new SolrQuery();
        query.setQuery("content:*" + content + "*" + " and content:*" + content + "*");
        query.setStart((pageNo - 1) * pageSize);
        query.setRows(pageSize);
        query.setSort("logId" , SolrQuery.ORDER.desc);
        QueryResponse response = null;
        SolrDocumentList documentList = null;
        List<ILog> list = new ArrayList<>();
        try {
            response = solrClient.query(query);
            documentList = response.getResults();
            if (!documentList.isEmpty()) {
                for (SolrDocument document:documentList) {
                    ILog  iLog= new ILog();
                    String logId = (String) document.get("logId");
                    iLog.setLogId(Long.valueOf(logId));
                    iLog.setContent((String) document.get("content"));
                    list.add(iLog);
                }
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }

    @RequestMapping("delete")
    public void delete(String id ){
        try {
            solrClient.deleteById(id);
            solrClient.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @RequestMapping("add")
    public void add(String logId  , String content ,String createTime){
        SolrInputDocument document = new SolrInputDocument();
        document.addField("logId", logId);
        document.addField("content", content);
        document.addField("createTime", createTime);
        try {
            solrClient.add(document);
            solrClient.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 


}

solr命令:

普通启动:solr start ;
指定端口启动:solr start -p 8800;
指定solr内存大小:solr start -m 2g;
停止:solr stop -all

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值