SpringBoot 集成Elasticsearch简单八步

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

  1、Elasticsearch介绍  

     Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。 
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

2、安装Elasticsearch服务并进行相关配置,启动Elasticsearch服务

springboot elasticsearch8,elasticsearch,elasticsearch,spring boot,java

3、安装Elasticsearch Header  可视查看相关记录信息

springboot elasticsearch8,elasticsearch,elasticsearch,spring boot,java

4、 pom.xml

        <!-- elasticsearch -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>io.searchbox</groupId>
            <artifactId>jest</artifactId>
        </dependency>

5、application.yml

spring:
  elasticsearch:
    jest:
      uris:
        - http://localhost:9200
      read-timeout: 5000

6、我们创建一个MyTestController 接口类

package com.zx.log.controller;


import com.zx.log.entity.UserOperationLog;
import com.zx.log.service.visit.UserOperationLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Properties;
import java.util.UUID;

/**
 * @Date 2022/7/20 11:05
 * 用着测试用的“”:“”“:”“:”“
 * @Version 1.0
 */
@RestController
@Api(tags = "测试测试")
@RequestMapping("/mytest")
public class MyTestController {




    @Autowired
    private UserOperationLogService userOperationLogService;

    /**
     * 创建es索引
     *
     * @return
     */
    @RequestMapping(value = "/createIndex")
    public String createIndex() {
        userOperationLogService.createIndex("test");
        return "ok";
    }

    /**
     * 新增行
     *
     * @return
     */
    @RequestMapping(value = "/saveEntity")
    public String saveEntity() {
        UserOperationLog userOperationLog = new UserOperationLog();
        userOperationLog.setNumId(UUID.randomUUID().toString().replace("-", ""));
        userOperationLog.setAppName("111");
        userOperationLog.setAppEnName("appEnName");
        userOperationLog.setFunName("funName");
        userOperationLog.setFunEnName("funEnName");
        userOperationLog.setOpType("opType");
        userOperationLogService.saveEntity(userOperationLog);
        return "ok";
    }

    @RequestMapping(value = "/delEntity")
    public String delEntity() {
        userOperationLogService.delEntity("JkJSIIIBXZZ9IO25Drr1");
        return "ok";
    }

 
}

7、创建接口类:

package com.zx.log.service.visit;

import com.zx.log.entity.UserOperationLog;

import java.util.List;

/**
 * @Author bo
 * @Version 1.0
 */
public interface UserOperationLogService {

    /**
     * 单个插入ES
     * @param entity
     */
    void saveEntity(UserOperationLog entity);

    /**
     * 删除某条ES
     * @param id
     */
    void delEntity(String id);

    /**
     * 批量保存到ES
     * @param entityList
     */
    void saveEntity(List<UserOperationLog> entityList);

    /**
     * 在ES中搜索内容
     */
    List<UserOperationLog> searchEntity(String searchContent);
    /**
     * 创建索引
     *
     * @param indexName
     */

    void createIndex(String indexName);

    /**
     * 删除索引
     *
     * @param indexName
     */
    void deleteIndex(String indexName);

}

8、创建实现类:

import io.searchbox.client.JestClient;
import io.searchbox.client.JestResult;
import io.searchbox.core.Bulk;
import io.searchbox.core.Delete;
import io.searchbox.core.Index;
import io.searchbox.core.Search;
import io.searchbox.indices.CreateIndex;
import io.searchbox.indices.DeleteIndex;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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


/**
 * @Author 波
 * @Date 2022/7/21 11:05
 * @Version 1.0
 */
@Service
public class UserOperationLogServiceImpl implements UserOperationLogService {

    private static final Logger LOGGER = LoggerFactory.getLogger(UserOperationLogServiceImpl.class);

    @Autowired
    private JestClient jestClient;

    @Override
    public void saveEntity(UserOperationLog entity) {
        Index index = new Index.Builder(entity).id(entity.getNumId()).index("test").type("news").build();
        try {
            jestClient.execute(index);
            LOGGER.info("插入完成");
        } catch (IOException e) {
            e.printStackTrace();
            LOGGER.error(e.getMessage());
        }
    }

    @Override
    public void delEntity(String id) {
        Delete index = new Delete.Builder(id).index("test").type("news").build();
        try {
            jestClient.execute(index);
            LOGGER.info("删除完成");
        } catch (IOException e) {
            e.printStackTrace();
            LOGGER.error(e.getMessage());
        }
    }


    @Override
    public void saveEntity(List<UserOperationLog> entityList) {
        Bulk.Builder bulk = new Bulk.Builder();
        for (UserOperationLog entity : entityList) {
            Index index = new Index.Builder(entity).id(String.valueOf(entity.getNumId())).index("test").type("news").build();
            bulk.addAction(index);
        }
        try {
            jestClient.execute(bulk.build());
            LOGGER.info("批量插入完成");
        } catch (IOException e) {
            e.printStackTrace();
            LOGGER.error(e.getMessage());
        }
    }

    /**
     * 在ES中搜索内容
     */
    @Override
    public List<UserOperationLog> searchEntity(String searchContent) {
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchQuery("studentName", searchContent));
        Search search = new Search.Builder(searchSourceBuilder.toString())
                .addIndex("test").addType("news").build();
        try {
            JestResult result = jestClient.execute(search);
            return result.getSourceAsObjectList(UserOperationLog.class);
        } catch (IOException e) {
            LOGGER.error(e.getMessage());
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 创建索引
     *
     * @param indexName
     */
    @Override
    public void createIndex(String indexName) {
        try {
            CreateIndex createIndex = new CreateIndex.Builder(indexName).build();
            JestResult result = jestClient.execute(createIndex);
            LOGGER.info("result", result.getJsonString());
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
            e.printStackTrace();
        }
    }

    /**
     * 删除索引
     *
     * @param indexName
     */
    @Override
    public void deleteIndex(String indexName) {
        try {
            DeleteIndex deleteIndex = new DeleteIndex.Builder(indexName).build();
            JestResult result = jestClient.execute(deleteIndex);
            LOGGER.info("result", result.getJsonString());
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
            e.printStackTrace();
        }

    }

}

   上面的实体类大家可以自由发挥,随便创建一个就行并指定数据行ID,主要方便数据后续的删除。文章来源地址https://www.toymoban.com/news/detail-582150.html

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

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

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

相关文章

  • Springboot集成ElasticSearch实现简单的crud、简单分页、模糊查询

    pom.xml引入ElasticSearch application.yml配置 启动类加入注解@EnableElasticsearchRepositories ElasticSearchEntity Repository类继承ElasticsearchRepository ElasticSearchService ElasticSearchController 测试 查看创建的索引(相当于MySQL的表) method:GET 删除索引 method:DELETE 查看索引里的全部数据, elastic是实体类

    2023年04月18日
    浏览(51)
  • 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连接ElasticSearch8.*

    系统中需要使用到ElasticSearch进行内容检索,因此需要搭建SpringBoot + ElasticSearch的环境。

    2024年02月16日
    浏览(45)
  • springboot整合elasticsearch8

    1.引入maven依赖 2.application.yml添加配置 3.编写config文件 启动demo项目,通过控制台日志查看是否能够正常连接es。 4.在DemoApplicationTests编写简单测试操作es。

    2024年02月12日
    浏览(48)
  • java(springboot)对接elasticsearch8+

    注:jackson包es只用到了databind,之所以全部引用是因为actuator用到了其他,只升级一个会 导致版本冲突 注:因为没有用springboot自身的es插件所以健康检查检测不到es状态,关闭es检测 上边创建索引是定制的加了特殊mapping,正常这样

    2024年02月16日
    浏览(45)
  • 【springboot-04】ElasticSearch8.7搜索

    为什么学?因为它 查询速度很快 ,而且是非关系型数据库 (NoSql) 一些增删改查已经配置好了,无需重复敲码 ElasticSearch 更新快,本篇文章将主要介绍一些常用方法。 对于 spirngboot 整合 Es 的文章很少,有些已经过时【更新太快了】  依赖:Maven 配置类:EsConfig 水果信息

    2024年02月07日
    浏览(51)
  • springBoot整合ElasticSearch8.x版本

    导入依赖   dependency         groupIdcom.fasterxml.jackson.core/groupId         artifactIdjackson-databind/artifactId         version2.13.2/version   /dependency     dependency         groupIdorg.glassfish/groupId         artifactIdjakarta.json/artifactId         version2.0.1/version   /dependency           dependency  

    2023年04月21日
    浏览(44)
  • springboot整合elasticsearch8组合条件查询

    整合过程见上一篇文章 springboot整合elasticsearch8 1.es8多条件组合查询 2.使用scroll进行大数据量查询

    2024年02月16日
    浏览(55)
  • Springboot3.1+Elasticsearch8.x匹配查询

    springboot-starter3.1.0中spring-data-elasticsearch的版本为5.1.0,之前很多方法和类都找不到了。这里主要讲讲在5.1.0版本下如何使用spring data对elesticsearch8.x进行匹配查询。 第一步当然是配置依赖 在这里面,spring-boot-starter-data-elasticsearch是3.1.0的,里面的spring-data-elasticsearch是5.1.0的,服务

    2024年02月15日
    浏览(46)
  • SpringBoot3.0 整合 ElasticSearch8.5.0 及使用

    这两个版本都是目前较新的版本,本文选用的依赖是 spring-boot-starter-data-elasticsearch:3.0 ,这个新版本也是改用了es的 elasticsearch-java API,全面推荐使用Lambda语法;另外SpringData本身推出了 Repository 功能(有些类似Mybatis-Plus)的功能,也支持注解简化开发。 Docker 快速部署 单机 ela

    2024年02月11日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包