190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

栏目: Java · 发布时间: 6年前

内容简介:搜索可以说是非常常见的场景了,一般选择比较多的有solr和es,底层都是基于Lucene搜索引擎实现。之前简单的使用过solr,一直没有成体系的学习过,正好需要给一个内部项目封装统一的查询组件,借这个机会好好的撸一把solr的知识要点使用docker实现solr环境的搭建,快速简洁浏览器打开:

搜索可以说是非常常见的场景了,一般选择比较多的有solr和es,底层都是基于Lucene搜索引擎实现。之前简单的使用过solr,一直没有成体系的学习过,正好需要给一个内部项目封装统一的查询组件,借这个机会好好的撸一把solr的知识要点

I. Solr环境搭建

1. docker方式安装solr

使用 docker 实现solr环境的搭建,快速简洁

docker pull solr

启动solr容器

docker run --name my-solr -d -p 8983:8983 -t solr

浏览器打开: http://localhost:8983/solr/#/

新建core

docker exec -it --user=solr my-solr bin/solr create_core -c yhh

建立成功之后,终端会有相应的提示,然后刷新浏览器,可以看到新的yhh

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

2. schema

通过docker安装的最新solr版本为8.0,可以直接在http界面通过控制台来创建schema,而不需要像以前那样,进入配置文件进行添加处理;当然也可以通过修改对应的配置

假定我们现在需要在yhh这个core中存文章,结构为

id: string # 默认的全局唯一字段
title: string # 文章标题
content: string # 文章内容
type: int # 文章类型

a. 控制台添加方式

首先进入schema的页面,可以如下操作,也可以点击连接: http://localhost:8983/solr/#/yhh/schema

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

然后通过点击Add Field按钮添加字段,确认按钮之后完成添加

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

添加完成之后点击 please select... ,弹出下拉框,看到刚才添加的东西

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

b. 编辑xml文件方式

通过控制台的overiew可以定位到core存储路径,然后我们找到对应的定义文件,添加两个字段

create_at: long # 文章创建时间
publish_at: long # 文章发布时间

修改配置文件

# 首先进入docker内
docker exec -it --user=root my-solr /bin/bash

# 定位配置文件
vim /var/solr/data/yhh/conf/managed-schema

# 新增字段
<field name="create_at" type="pint" uninvertible="true" default="0" indexed="true" stored="true" />
<field name="publish_at" type="pint" uninvertible="true" default="0" indexed="true" stored="true" />

修改完成之后如下图

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

配置文件修改之后,再去刷控制台,发现并没有显示出来,通过重启solr之后,新的才显示出来

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

c. 功能测试

schema定义完毕之后,就可以进行简单的测试了,先加几个文档;然后再进行查询

添加文档

直接在控制台进行添加: http://localhost:8983/solr/#/yhh/documents

{
id: 2,
title: "一灰灰",
content: "欢迎来到一灰灰的博客",
type: 1,
create_at: 1557488164,
publish_at: 1557488164
}

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

文档查询

直接在控制台进行操作: http://localhost:8983/solr/#/yhh/query

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

然后来个高级一点的查询,我希望查询所有内容包含一灰灰的数据,可以如下查询

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

II. SpringBoot搭建solr环境

1. 配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from update -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    <java.version>1.8</java.version>
</properties>


<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-solr</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

上面的配置中,需要注意是引入包 spring-boot-starter-data-solr

引入这个包之后,我们就可以愉快的使用 SolrTemplate 来完成solr的各种骚操作了

package com.git.hui.boot.solr.config;

import org.apache.solr.client.solrj.SolrClient;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.solr.core.SolrTemplate;

/**
 * Created by @author yihui in 19:49 19/5/10.
 */
@Configuration
public class SearchAutoConfig {

    @Bean
    @ConditionalOnMissingBean(SolrTemplate.class)
    public SolrTemplate solrTemplate(SolrClient solrClient) {
        return new SolrTemplate(solrClient);
    }
}

2. 简单测试

下面搞一个简单的查询,看下能不能获取到solr文档

package com.git.hui.boot.solr.solr;

import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.stereotype.Component;


/**
 * Created by @author yihui in 19:45 19/5/10.
 */
@Component
public class SolrSearchService {
    @Autowired
    private SolrTemplate solrTemplate;

    @Data
    public static class DocDO {
        private Integer id;
        private String title;
        private String content;
        private Integer type;
        private Long create_at;
        private Long publish_at;
    }

    public void query() {
        DocDO ans = solrTemplate.getById("yhh", 2, DocDO.class).get();
        System.out.println(ans);
    }
}

3. 测试

启动下任务开始测试

package com.git.hui.boot.solr;

import com.git.hui.boot.solr.solr.SolrSearchService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created by @author yihui in 19:44 19/5/10.
 */
@SpringBootApplication
public class Application {
    private SolrSearchService solrSearchService;

    public Application(SolrSearchService solrSearchService) {
        this.solrSearchService = solrSearchService;
        query();
    }

    private void query() {
        this.solrSearchService.query();
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

执行截图如下

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

III. 小结

上面介绍了最基础的solr环境搭建,springboot的solr测试环境准备,并实现了一个简单的查询实例,但距离真正上手撸solr还缺不少东西

  • solr的基础知识,前面的字段定义是否合法,索引什么的改怎么考虑
  • 配置修改,安全保证
  • 中文分词如何设置,如何使用在solr中进行使用
  • solr的增删改查的基本操作姿势
  • solr的全文搜索优势如何体现
  • SpringBoot中进行solr操作

0. 项目

1. 一灰灰Blog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

  • 微博地址:小灰灰Blog
  • QQ: 一灰灰/3302797840

3. 扫描关注

一灰灰blog

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

知识星球

190510-SpringBoot高级篇搜索之Solr环境搭建与简单测试

打赏 如果觉得我的文章对您有帮助,请随意打赏。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数学拾遗

数学拾遗

加黑蒂 / 清华大学出版社 / 2004-8 / 49.00元

Beginning graduate students in mathematics and other quantitative subjects are expected to have a daunting breadth of mathematical knowledge ,but few have such a backgroud .This book will help stedent......一起来看看 《数学拾遗》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具