SpringBoot 集成 Elasticsearch

一、版本

复制代码
spring-boot版本:2.3.7.RELEASE

Elasticsearch7.8.0

版本说明详见

二、Elasticsearch 下载和安装

Elasticsearch 下载
kibana下载
ik分词器下载

配置IK分词器

2.1 解压,在elasticsearch-7.8.0\plugins 路径下新建ik目录

2.2 将ik分词器解压放入ik目录

2.3 扩展词汇测试示例

2.3.1 ik/config 目录下新建custom.dic文件

2.3.2 编辑custom.dic文件,加入新词汇

注意:custom.dic文件内容的格式的编码为UTF-8格式编码,否则会导致扩展词汇失效。

2.3.3 打开 IKAnalyzer.cfg.xml 文件,将新建的 custom.dic 配置其中,如下图

2.4 编辑kibana.yml ,修改kibana配置

三、新建Springboot项目,整合Elasticsearch并测试

3.1 加入依赖,配置

shell 复制代码
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
shell 复制代码
spring: 
  main: 
    allow-bean-definition-overriding: true 
  elasticsearch:
    rest:
      uris: http://localhost:9200

3.2 新建实体类SkuEs

java 复制代码
@Data
@Document(indexName = "skues" ,shards = 3,replicas = 1)
public class SkuEs {

    // 商品Id= skuId
    @Id
    private Long id;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String keyword;

    @Field(type = FieldType.Integer, index = false)
    private Integer skuType;

    @Field(type = FieldType.Integer, index = false)
    private Integer isNewPerson;

    @Field(type = FieldType.Long)
    private Long categoryId;

    @Field(type = FieldType.Text)
    private String categoryName;

    @Field(type = FieldType.Keyword, index = false)
    private String imgUrl;

    //  es 中能分词的字段,这个字段数据类型必须是 text!keyword 不分词!
    @Field(type = FieldType.Text)
    private String title;

    @Field(type = FieldType.Double)
    private Double price;

    @Field(type = FieldType.Integer, index = false)
    private Integer stock;

    @Field(type = FieldType.Integer, index = false)
    private Integer perLimit;

    @Field(type = FieldType.Integer, index = false)
    private Integer sale;

    @Field(type = FieldType.Long)
    private Long wareId;

    //  商品的热度!
    @Field(type = FieldType.Long)
    private Long hotScore = 0L;

    @Field(type = FieldType.Object, index = false)
    private List<String> ruleList;

}

3.2 新建接口SkuRepository

java 复制代码
public interface SkuRepository extends ElasticsearchRepository<SkuEs,Long> {


}

3.3 测试

java 复制代码
@Service
public class SkuServiceImpl implements SkuService {

    @Autowired
    private SkuRepository skuRepository;

    @Override
    public void upperSku(Long skuId) {
        //  3 调用方法添加ES
        SkuEs skuEs = new SkuEs();
        skuEs.setCategoryId(11111l);
        skuEs.setCategoryName("name");
        skuEs.setId(1123l);
        skuEs.setKeyword("keyword");
        skuEs.setWareId(1123l);
        skuEs.setIsNewPerson(12);
        skuEs.setImgUrl("url");
        skuEs.setTitle("SkuName");
        skuEs.setSkuType(0);
        skuEs.setPrice(123.1);
        skuEs.setStock(11);
        skuEs.setSale(21);
        skuEs.setPerLimit(123);

        skuRepository.save(skuEs);
    }
}

3.4 运行结果

打开kibana控制台:http://localhost:5601/app/kibana#/dev_tools/console

相关推荐
一条可有可无的咸鱼4 小时前
企业招聘信息,企业资讯进行公示
java·vue.js·spring boot·uni-app
程序员游老板5 小时前
基于SpringBoot3_vue3_MybatisPlus_Mysql_Maven的社区养老系统/养老院管理系统
java·spring boot·mysql·毕业设计·软件工程·信息与通信·毕设
AI逐月7 小时前
Git 彻底清除历史记录
大数据·git·elasticsearch
q_19132846958 小时前
基于SpringBoot2+Vue2的行业知识答题考试系统
java·vue.js·spring boot·mysql·毕业设计·计算机毕业设计·演示文稿
wxin_VXbishe8 小时前
springboot居家养老管理系统-计算机毕业设计源码55953
java·c++·spring boot·python·spring·django·php
Json_8 小时前
springboot框架 线程池使用与配置,简单粗暴直接用,再也不用自己创建线程了~
java·spring boot·后端
老华带你飞9 小时前
二手商城|基于springboot 二手商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
老华带你飞9 小时前
酒店预约|基于springboot 酒店预约系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
古城小栈9 小时前
Spring Boot + 边缘 GenAI:智能座舱应用开发实战
java·spring boot·后端