SpringBoot初级开发--加入ElasticSearch数据源(4)

这篇具有很好参考价值的文章主要介绍了SpringBoot初级开发--加入ElasticSearch数据源(4)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


  ES就不用我说了吧,如果是安装的话可以参考我这边blog《Centos7.9安装ElasticSearch6》,安装好ES,接下来我们配置SpringBoot.在配置之前,先看看版本对应表。
SpringBoot初级开发--加入ElasticSearch数据源(4),JAVA,springboot,spring boot,elasticsearch,后端,java,spring
1.修改POM文件的依赖

 <!-- ES  默认对应springboot的版本 -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  </dependency>

2.增加application.properties配置文件属性值

spring.elasticsearch.uris=http://10.10.52.155:9200
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.repositories.cluster-name=elasticsearch
spring.data.elasticsearch.repositories.cluster-nodes=10.10.52.155:9300

紧接上一章的工程,我们在model层下增加一个po实体

package com.example.firstweb.model.po;


import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@Getter
@Setter
@Data
@Document(indexName = "esinfoindex")
public class EsInfoPo {
    @Id
    private  Long id;

    @Field(type = FieldType.Keyword)
    private String title;

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

}

Spring Data通过注解来声明字段的映射属性,有下面的三个注解:
@Document 作用在类,标记实体类为文档对象,一般有两个属性
    indexName:对应索引库名称
    type:对应在索引库中的类型
    shards:分片数量,默认5
    replicas:副本数量,默认1
  
@Id 作用在成员变量,标记一个字段作为id主键
  
@Field 作用在成员变量,标记为文档的字段,并指定字段映射属性:
    type:字段类型,是枚举:FieldType,可以是text、long、short、date、integer、object等
    
text:存储数据时候,会自动分词,并生成索引
    
keyword:存储数据时候,不会分词建立索引
    
Numerical:数值类型,分两类
      基本数据类型:long、interger、short、byte、double、float、half_float
      浮点数的高精度类型:scaled_float
      需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
    
Date:日期类型
      elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
    
index:是否索引,布尔类型,默认是true
    
store:是否存储,布尔类型,默认是false
    
analyzer:分词器名称,这里的ik_max_word即使用ik分词器

接下来编些DAO层的代码EsInfoDao

package com.example.firstweb.dao;

import com.example.firstweb.model.po.EsInfoPo;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface EsInfoDao extends ElasticsearchRepository<EsInfoPo, Long> {
}

在编写完Dao层代码后,开始编写Service代码

package com.example.firstweb.service;

import com.example.firstweb.dao.EsInfoDao;

import com.example.firstweb.model.po.EsInfoPo;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.domain.PageRequest;

import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHits;

import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.stereotype.Service;

import java.util.stream.Collectors;

@Service
public class EsInfoService {

    @Autowired
    private EsInfoDao esInfoDao;

    @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;

    public EsInfoPo save(EsInfoPo esInfo){
        return  esInfoDao.save(esInfo);
    }

    public void searchContent(){

        MultiMatchQueryBuilder multiMatchQuery = QueryBuilders.multiMatchQuery("长城","title","content");

        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(multiMatchQuery)
                .withPageable(PageRequest.of(0, 10))//分页
                .build();
        SearchHits<EsInfoPo> search = elasticsearchRestTemplate.search(searchQuery,EsInfoPo.class);

        System.out.println("total hits:"+search.getTotalHits());

        System.out.println(search.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList()));

    }
}

Service代码写完后,直接写测试用例代码,然后运行测试用例。这里有个注意的地方就是在运行之前,要去建立索引,可以用ElasticSearch-Head去建立 一个esinfoindex的索引,并且运行的ES在elasticsearch.yml属性中加上xpack.security.enabled: false属性。

Elasticsearch现在的新版本已经弃用了ElasticsearchTemplate类,Repository里原来的search方法也已经弃用了。现在都是用ElasticsearchRestTemplate类实现。

package com.example.firstweb;

import com.example.firstweb.dao.EsInfoDao;
import com.example.firstweb.model.po.EsInfoPo;
import com.example.firstweb.service.EsInfoService;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
import org.springframework.test.context.junit4.SpringRunner;


@SpringBootTest
class FirstwebApplicationTests {
    @Autowired
    private EsInfoService esInfoService;

    @Test
    void contextLoads() {
    }

    @Test
    void testEs(){
        EsInfoPo esi= new EsInfoPo();
        esi.setId(new Long(1));
        esi.setTitle("中国长城");
        esi.setContent("姚明夺得男篮世界杯八强");
        esInfoService.save(esi);

        esInfoService.searchContent();
    }
}

在Springboot中直接运行FirstwebApplicationTests ,得到如下结果
SpringBoot初级开发--加入ElasticSearch数据源(4),JAVA,springboot,spring boot,elasticsearch,后端,java,spring
并且在ElasticSearch-Head中可以查看到建立的那条索引
SpringBoot初级开发--加入ElasticSearch数据源(4),JAVA,springboot,spring boot,elasticsearch,后端,java,spring
工程源代码可以在这里获得:链接: https://pan.baidu.com/s/1hAvFotdKwXxg80tNVLOz4w 提取码: wz4a文章来源地址https://www.toymoban.com/news/detail-681945.html

到了这里,关于SpringBoot初级开发--加入ElasticSearch数据源(4)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot从数据库读取数据数据源配置信息,动态切换数据源

            首先准备多个数据库,主库smiling-datasource,其它库test1、test2、test3         接下来,我们在主库smiling-datasource中,创建表databasesource,用于存储多数据源相关信息。表结构设计如下         创建好表之后,向表databasesource中存储test1、test2、test3三个数据库的相关配置

    2024年01月16日
    浏览(51)
  • springboot配置数据源

    Spring Framework 为 SQL 数据库提供了广泛的支持。从直接使用 JdbcTemplate 进行 JDBC 访问到完全的对象关系映射(object relational mapping)技术,比如 Hibernate。Spring Data 提供了更多级别的功能,直接从接口创建的 Repository 实现,并使用了约定从方法名生成查询。 1、JDBC 1、创建项目,导

    2024年02月08日
    浏览(34)
  • Springboot多路数据源

    1、多路数据源配置 (1)SpringBoot+MyBatis-Plus+Oracle实现多数据源配置 https://blog.csdn.net/weixin_44812604/article/details/127386828 (2)SpringBoot+Mybatis搭建Oracle多数据源配置简述 https://blog.csdn.net/HJW_233/article/details/129103370 (3)SpringBoot+Mybatis+Oracle 增删改查(简单的案例,超详细) https://blo

    2024年02月12日
    浏览(35)
  • springboot整合多数据源的配置以及动态切换数据源,注解切换数据源

    在许多应用程序中,可能需要使用多个数据库或数据源来处理不同的业务需求。Spring Boot提供了简便的方式来配置和使用多数据源,使开发人员能够轻松处理多个数据库连接。如果你的项目中可能需要随时切换数据源的话,那我这篇文章可能能帮助到你 ℹ️:这里对于pom文件

    2024年02月10日
    浏览(42)
  • springboot,多数据源切换

    需求介绍:         要求做一个平台,有其他第三方系统接入;每个系统有自己的数据源配置,通过调用平台接口,实现将数据保存到第三方自己的数据库中; 实现过程:         1.在平台项目运行时,通过接口获取每个第三方系统的数据源;以key-value的形式保存到全局

    2024年02月16日
    浏览(30)
  • springboot多数据源使用

    在工作上有一个新项目,现在需要获取旧项目的用户信息、积分的操作等等,所以需要调用另外一个项目的数据库,所以我们可以配置多数据源。 yml版本  properties版本 在impl类上加注解@DS(\\\"master\\\"),master为配置的master名字 调用方法  获取结果  在impl类上加注解@DS(\\\"slave_1\\\"),

    2024年02月11日
    浏览(30)
  • SpringBoot动态切换数据源

      Spring提供一个DataSource实现类用于动态切换数据源—— AbstractRoutingDataSource pom.xml 大概的项目结构 注意:这两个事务管理器,并不能处理分布式事务 链接:https://pan.baidu.com/s/1ymxeKYkI-cx7b5nTQX0KWQ  提取码:6bii  --来自百度网盘超级会员V4的分享                

    2024年02月06日
    浏览(40)
  • springboot之多数据源配置

    实际开发中,进场可能遇到在一个引用中可能需要访问多个数据库的情况,以下是两种典型场景: 数据分布在不同的数据库汇总,数据库拆了,应用没拆。一个公司多个子项目,各用各的数据库,涉及数据共享。。。。 为了解决数据库的读性能瓶颈(读比写性能更高,写锁

    2024年02月07日
    浏览(33)
  • springboot + (mysql/pgsql) + jpa 多数据源(不同类数据源)

     配置文件: datasourceconfig: 数据源一: 数据源二:

    2024年02月14日
    浏览(48)
  • 【精·超详细】SpringBoot 配置多个数据源(连接多个数据库)

    目录 1.项目路径 2.pom.xml  引入依赖: 3.application.yml配置文件: 4.两个entity类 5.Conroller 6.两个Service以及两个ServiceImpl  7.两个Mapper及两个Mapper.xml  8.运行Application  然后在浏览器请求 9.查看两个数据库是否有新增数据           总结: 1.pom.xml 引入依赖: dynamic-datasource-spring-b

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包