Elasticsearch 整合springboot-Elasticsearch文章二

这篇具有很好参考价值的文章主要介绍了Elasticsearch 整合springboot-Elasticsearch文章二。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官网

https://www.elastic.co/cn/

版本

https://docs.spring.io/spring-data/elasticsearch/docs/4.4.10/reference/html/

Elasticsearch 整合springboot-Elasticsearch文章二,分布式微服务,elasticsearch,spring boot
Elasticsearch 整合springboot-Elasticsearch文章二,分布式微服务,elasticsearch,spring boot

我们选用的是elasticsearch 7.17.9版本,对应的,我们需要升级springboot版本,对应的中间件都需要升级

组件版本说明

Springboot: 2.7.10
spring-data-elasticsearch: 4.4.10
spring-boot-starter-data-elasticsearch: 2.7.10

实现代码地址

https://github.com/OrderDong/microservice-boot
分支:microservice-boot-1.0.6-es

microservice-boot-eleastic模块

pom.xml


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>


        <!--elastic search 7.17.9 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <!-- spring-data-elasticsearch 包含此包
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.17.9</version>
        </dependency>-->

        <!-- Reactive Infrastructure -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webflux</artifactId>
        </dependency>

        <dependency>
            <groupId>io.projectreactor.netty</groupId>
            <artifactId>reactor-netty-http</artifactId>
        </dependency>

application.yml


spring:
  # Jackson 配置项
  jackson:
    #    serialization:
    #      write-dates-as-timestamps: true # 设置 Date 的格式,使用时间戳
    #      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
    #      write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
    #      fail-on-empty-beans: false # 允许序列化无属性的 Bean
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  application:
    name: microservice-boot-es
  elasticsearch:
    uris: 10.255.20.231:9200
server:
  port: 8023
  tomcat:
    uri-encoding: UTF-8
    max-connections: 40000

Repository

package org.lwd.microservice.boot.es.dao;

import org.lwd.microservice.boot.es.entity.VisitLog;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author weidong
 * @version V1.0.0
 * @since 2023/7/26
 */
@Repository
public interface VisitLogRepository extends ElasticsearchRepository<VisitLog, String> {

    //自定义规则
    List<VisitLog> findByUserLoginId(Integer userLoginId);
}

VisitLog模型定义

package org.lwd.microservice.boot.es.entity;

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

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 系统访问日志
 * </p>
 *
 * @author lwd
 * @since 2023-07-26
 */
@Getter
@Setter
@Document(indexName = "visit_log")
public class VisitLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     *访问id
     */
    @Id
    private Integer id;

    /**
     * 不同业务表明
     */
    private String tableName;
    /**
     *登录账号
     */
    private String userLoginId;

    /**
     *服务ip
     */
    private String serverIpAddress;

    /**
     *服务名
     */
    private String serverHostName;

    /**
     *请求url
     */
    private String initialRequest;

    /**
     *消息内容
     */
    private String msgContent;

    /**
     *创建时间
     */
    private Date createTime;

}


controller使用

中间服务层定义掠过了。。。。

package org.lwd.microservice.boot.es.controller;

import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.client.RestHighLevelClient;
import org.lwd.microservice.boot.es.entity.VisitLog;
import org.lwd.microservice.boot.es.service.VisitLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.*;
import org.springframework.data.elasticsearch.core.query.Query;
import org.springframework.data.elasticsearch.core.query.StringQuery;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * @author weidong
 * @version V1.0.0
 * @since 2023/7/26
 */
@Slf4j
@RestController
@RequestMapping("/es")
public class VisitLogController {
    @Autowired
    VisitLogService visitLogService;

    //rest模版操作
    @Autowired
    ElasticsearchOperations elasticsearchOperations;

    //响应式模版操作
    @Autowired
    ReactiveElasticsearchOperations reactiveElasticsearchOperations;


    @PostMapping("/saveVisitLog")
    @ResponseBody
    public String saveVisitLog(@RequestBody VisitLog visitLog){
        VisitLog saveVisitLog = visitLogService.saveVisitLog(visitLog);
        log.info("----saveVisitLog----:{}", JSON.toJSONString(saveVisitLog));
        return JSON.toJSONString(saveVisitLog);
    }

    @GetMapping("/getVisitLogAll")
    @ResponseBody
    public String getVisitLogAll(){
        List<VisitLog> logList = visitLogService.findAll();
        log.info("----getVisitLogAll----:{}", JSON.toJSONString(logList));
        return JSON.toJSONString(logList);
    }

    //自定义查询
    @GetMapping("/getVisitLogByUserLoginId")
    @ResponseBody
    public String getVisitLogByUserLoginId(Integer userLoginId){
        List<VisitLog> logList = visitLogService.findByUserLoginId(userLoginId);
        log.info("----getVisitLogAll----:{}", JSON.toJSONString(logList));
        return JSON.toJSONString(logList);
    }
}

测试http请求

TestEs.http


## 新增日志
POST http://localhost:8023/es/saveVisitLog
Content-Type: application/json

{
  "id": 3,
  "tableName": "VisitLog",
  "userLoginId": 3,
  "serverIpAddress": "127.0.0.1",
  "serverHostName": "weidong",
  "initialRequest": "http://localhost:8023",
  "msgContent": "test es add3",
  "createTime": "2023-07-27 16:34:36"
}


### 获取所有数据-不分页

GET http://localhost:8023/es/getVisitLogAll

### 获取所有数据-自定义查询规则

GET http://localhost:8023/es/getVisitLogByUserLoginId?userLoginId=1


结果

Elasticsearch 整合springboot-Elasticsearch文章二,分布式微服务,elasticsearch,spring boot

kibana结果

Elasticsearch 整合springboot-Elasticsearch文章二,分布式微服务,elasticsearch,spring boot

@ID

如果不赋值给ID,那么es会自动生成一个字符串,但是,获取数据可能出问题

Elasticsearch 整合springboot-Elasticsearch文章二,分布式微服务,elasticsearch,spring boot文章来源地址https://www.toymoban.com/news/detail-613914.html

外传

😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥

到了这里,关于Elasticsearch 整合springboot-Elasticsearch文章二的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ElasticSearch8 - SpringBoot整合ElasticSearch

    springboot 整合 ES 有两种方案,ES 官方提供的 Elasticsearch Java API Client 和 spring 提供的 [Spring Data Elasticsearch](Spring Data Elasticsearch) 两种方案各有优劣 Spring:高度封装,用着舒服。缺点是更新不及时,有可能无法使用 ES 的新 API ES 官方:更新及时,灵活,缺点是太灵活了,基本是一

    2024年03月25日
    浏览(97)
  • Springboot整合fastdfs-分布式文件存储

    一、快速开始 1、添加依赖 2、添加配置项 3、新建 fdfs_client.conf(可忽略) 2、FastDFS客户端工具

    2024年02月11日
    浏览(47)
  • ElasticSearch(九)【SpringBoot整合】

    上一篇文章 《ElasticSearch - 过滤查询》 9.1 基本环境配置 创建一个springboot工程 springboot-elasticsearch 在 pom.xml 导入依赖 【 注意 】使用的springboot需要根当前ES版本兼容 配置 application.yml 文件 配置客户端 创建config包,添加配置类 RestClientConfiguration.class 配置完之后,该配置类不仅

    2024年02月14日
    浏览(35)
  • 三.SpringBoot整合Elasticsearch

    我们整合es直接给es发请求就可以了,但是现在有很多方式去调用es的接口,那都有那些呢? 访问es端口 访问方式 使用工具 缺点 9300 TCP transport-api.jar 不适配es版本,es 8.0之后弃用。 9200 HTTP JestClient 非官方,对应es版本更新慢。 9200 HTTP RestTemplate 模拟发送http请求,但是很多请求

    2024年02月13日
    浏览(36)
  • SpringBoot 整合 ElasticSearch

    😍开始前给大家推荐一款很火的刷题、面试求职网站💕 https://www.nowcoder.com/link/pc_csdncpt_xiaoying_java 索引Index 一组相似文档的集合 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个商品数据的索引,一个订单数据的索引,还有一个用户数据的索引。一

    2023年04月08日
    浏览(33)
  • 最近项目上需要发送短信整理了一篇文章 SpringBoot整合阿里云发送短信

    阿里云短信服务网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 第一步:申请签名(一般申请时长在1-2小时之间)特别注意:场景说明不要乱填以免申请不通过  第二步:申请短信模板(一般申请时长在1-2小时之间)特别注意:场景说明不要乱填以免申请不

    2024年02月06日
    浏览(49)
  • Elasticsearch是什么,如何学习Elasticsearch,整合SpringBoot

    目录 一、是什么Elasticsearch 二、Elasticsearch,整合SpringBoot 三、Elasticsearch的优势和应用场景   Elasticsearch是一个开源的搜索引擎,它采用Java语言编写,使用Lucene作为核心搜索引擎,并在其基础上构建了分布式的、可扩展的、实时的数据存储和分析引擎 。Elasticsearch最初由Shay B

    2024年02月16日
    浏览(40)
  • Elasticsearch安装、使用,Springboot整合Elasticsearch详细教程

    Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够实现近乎实时的搜索。 Elasticsearch官网 https://www.elastic.co/cn/ 这篇文章主要简单介绍一下Elasticsearch,Elasticsearch的java API博主也在学习中,文章会持续更新~ 目录 第一步:下载Elasticsearch 下载7.6.2版本 下载其他版本

    2024年02月04日
    浏览(35)
  • Springboot整合minio组件-分布式文件存储

    一、快速开始 Minlo说明: Minio是Apcche旗下的一款开源的轻量级文件服务器,基于对象存储,协议是基于Apache License v2.0,开源可用于商务。 Minio主要用来存储非结构化的数据,类似文件,图片,照片,日志文件,各类备份文件等,按照官网描述,文件的大小从几KB到5TB。 Minio提

    2024年02月11日
    浏览(55)
  • 【分布式缓存】springboot整合jetcache使用详解

    目录 一、前言 二、多级缓存问题 2.1 缓存分类 2.1.1 本地缓存 2.1.2 分布式缓存

    2024年02月17日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包