我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot集成ElasticSearch的代码是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot集成ElasticSearch的代码是什么

这篇“SpringBoot集成ElasticSearch的代码是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot集成ElasticSearch的代码是什么”文章吧。

一、Elasticseach介绍

1.简单介绍

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。是一种全文检索技术。

Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。Elasticsearch 是索引、搜索和分析魔法发生的地方。

Elasticsearch 是一个基于JSON的分布式搜索和分析引擎。

Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2.对比关系:

索引(indices)--------------------------------Databases 数据库
 
  类型(type)-----------------------------Table 数据表
     文档(Document)----------------Row 行
       字段(Field)-------------------Columns 列

3.详细说明:

概念

说明

索引库(indices)

indices是index的复数,代表许多的索引,

类型(type)

类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念

文档(document)

存入索引库原始的数据。比如每一条商品信息,就是一个文档

字段(field)

文档中的属性

映射配置(mappings)

字段的数据类型、属性、是否索引、是否存储等特性

4.查出数据的解释

 took:查询花费时间,单位是毫秒
 time_out:是否超时
 _shards:分片信息
 hits:搜索结果总览对象 
   total:搜索到的总条数
   max_score:所有结果中文档得分的最高分
   hits:搜索结果的文档对象数组,每个元素是一条搜索到的文档信息 
     _index:索引库
     _type:文档类型
     _id:文档id
     _score:文档得分
     _source:文档的源数据

 二、SpringBoot集成Elasticseach

1.引入依赖

<dependencies>      <dependency>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-data-elasticsearch</artifactId>      </dependency>      <dependency>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-test</artifactId>          <scope>test</scope>      </dependency> </dependencies>

2.添加配置

spring:  data:    elasticsearch:      cluster-name: elasticsearch      cluster-nodes: 192.168.7.132:9300

3.创建pojo类与索引对应

package com.leyou.elasticsearch.pojo; 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;@Document(indexName = "item", type = "docs", shards = 1, replicas = 0)public class Item {    @Id    private  Long id;        @Field(type = FieldType.Text,analyzer = "ik_max_word")    private String title;     * 分类    @Field(type = FieldType.Keyword)    private  String category;     * 品牌    private  String brand;     * 价格    @Field(type = FieldType.Double)    private  Double price;     * 图片地址    private  String images;    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    public String getTitle() {        return title;    public void setTitle(String title) {        this.title = title;    public String getCategory() {        return category;    public void setCategory(String category) {        this.category = category;    public String getBrand() {        return brand;    public void setBrand(String brand) {        this.brand = brand;    public Double getPrice() {        return price;    public void setPrice(Double price) {        this.price = price;    public String getImages() {        return images;    public void setImages(String images) {        this.images = images;    public Item() {    public Item(Long id, String title, String category, String brand, Double price, String images) {    @Override    public String toString() {        return "Item{" +                "id=" + id +                ", title='" + title + '\'' +                ", category='" + category + '\'' +                ", brand='" + brand + '\'' +                ", price=" + price +                ", images='" + images + '\'' +                '}';}

4.SpringData封装了基础的增删改查,自定义增删改查

这里需要继承接口-ItemRepository 

public interface ItemRepository extends ElasticsearchRepository<Item,Long> {     List<Item> findByTitle(String title);    List<Item> findByPriceBetween(Double d1,Double d2);}

5.测试方法--增删改查

package com.leyou.elasticsearch; import com.leyou.elasticsearch.dao.ItemRepository;import com.leyou.elasticsearch.pojo.Item;import org.elasticsearch.index.query.MatchQueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.sort.SortBuilders;import org.elasticsearch.search.sort.SortOrder;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Sort;import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;import org.springframework.test.context.junit4.SpringRunner;import java.util.ArrayList;import java.util.List;import java.util.Optional;@SpringBootTest(classes = ElasticsearchApplication.class)@RunWith(SpringRunner.class)public class ElasticsearchTest {    @Autowired    private ElasticsearchTemplate elasticsearchTemplate;//ES的模板类    private ItemRepository itemRepository;//Item的增删改查        @Test    public void testIndex(){        this.elasticsearchTemplate.createIndex(Item.class);        this.elasticsearchTemplate.putMapping(Item.class);        //this.elasticsearchTemplate.deleteIndex();    }     * 插入与更新    public void testCreate(){        Item item = new Item(1L,"小米手机9","手机","小米",3999.00,"https:www.baidu.com");        Object save = this.itemRepository.save(item);        List<Item> list = new ArrayList<>();        list.add(new Item(2L, "坚果手机R1", " 手机", "锤子", 3699.00, "http://image.leyou.com/123.jpg"));        list.add(new Item(3L, "华为META10", " 手机", "华为", 4499.00, "http://image.leyou.com/3.jpg"));        // 接收对象集合,实现批量新增        Iterable<Item> items = itemRepository.saveAll(list);        System.out.println(items);     * 删除    public void testDelete(){        Item item=new Item(1L,"小米手机9","手机","小米",3999.00,"https:www.baidu.com");        this.itemRepository.delete(item);     * 查询    public void testFind(){        System.out.println("-----主键查询------");        Optional<Item> byId = this.itemRepository.findById(1L);        System.out.println(byId.get());        System.out.println("-----查询全部------");        Iterable<Item> all = this.itemRepository.findAll();        all.forEach(i-> System.out.println(i));        System.out.println("-----排序查询(升序降序)------");        Iterable<Item> price = this.itemRepository.findAll(Sort.by("price").descending());        price.forEach(System.out::println);     * 调用自定义方法    public void testFindByU(){        List<Item> phone = this.itemRepository.findByTitle("手机");//        phone.forEach(i->{//            System.out.println(i);//        });        List<Item> byPriceBetween = this.itemRepository.findByPriceBetween(4000.0, 5000.0);        byPriceBetween.forEach(i-> System.out.println(i));     * 批量插入    public void indexList() {        list.add(new Item(1L, "小米手机7", "手机", "小米", 3299.00, "http://image.leyou.com/13123.jpg"));        list.add(new Item(2L, "坚果手机R1", "手机", "锤子", 3699.00, "http://image.leyou.com/13123.jpg"));        list.add(new Item(3L, "华为META10", "手机", "华为", 4499.00, "http://image.leyou.com/13123.jpg"));        list.add(new Item(4L, "小米Mix2S", "手机", "小米", 4299.00, "http://image.leyou.com/13123.jpg"));        list.add(new Item(5L, "荣耀V10", "手机", "华为", 2799.00, "http://image.leyou.com/13123.jpg"));        itemRepository.saveAll(list);     * 高级查询    public void testSearch(){        //通过查询构建器工具构建--重点:QueryBuilders:词条、模糊、范围        MatchQueryBuilder queryBuilder= QueryBuilders.matchQuery("title","手机");        //获取结果集        Iterable<Item> items = this.itemRepository.search(queryBuilder);        items.forEach(System.out::println);     * 重点--自定义查询    public void testNative(){        // 构建自定义查询构建器        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();        // 添加基本查询条件        queryBuilder.withQuery(QueryBuilders.matchQuery("title","手机"));        // 查询分页结果集        Page<Item> itemPage = this.itemRepository.search(queryBuilder.build());        System.out.println(itemPage.getTotalPages());        System.out.println(itemPage.getTotalElements());        itemPage.forEach(i-> System.out.println(i));     * 重点--分页查询    public void testPage(){        queryBuilder.withQuery(QueryBuilders.matchQuery("category","手机"));        queryBuilder.withPageable(PageRequest.of(1,2));     * 重点--排序    public void testSort(){        queryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.DESC));}

以上就是关于“SpringBoot集成ElasticSearch的代码是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringBoot集成ElasticSearch的代码是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringBoot集成ElasticSearch的代码是什么

这篇“SpringBoot集成ElasticSearch的代码是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sprin
2023-06-29

springboot集成mybatis的方法是什么

要在Spring Boot中集成MyBatis,可以按照以下步骤进行操作:添加MyBatis和MyBatis-Spring的依赖到你的pom.xml文件中:org.mybatis
springboot集成mybatis的方法是什么
2024-03-07

springboot集成hadoop的方法是什么

Spring Boot集成Hadoop的方法是通过在Spring Boot应用程序中使用HDFS客户端来访问和操作Hadoop集群。以下是一些步骤:在Spring Boot应用程序的pom.xml文件中添加Hadoop依赖项:
springboot集成hadoop的方法是什么
2024-03-14

springboot集成teams的方法是什么

本篇内容主要讲解“springboot集成teams的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot集成teams的方法是什么”吧!添加依赖
2023-06-28

SpringBoot集成tomcat的方法是什么

这篇文章主要介绍“SpringBoot集成tomcat的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot集成tomcat的方法是什么”文章能帮助大家解决问题。spring
2023-07-05

springboot集成ffmpeg的方法是什么

要在Spring Boot中集成FFmpeg,你可以使用Java-FFmpeg库来实现。下面是一些集成FFmpeg的步骤:添加Java-FFmpeg库的依赖项到你的Spring Boot项目的pom.xml文件中:com.github.ko
2023-10-23

Springboot集成lombok.jar的方法是什么

本文小编为大家详细介绍“Springboot集成lombok.jar的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot集成lombok.jar的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一
2023-07-06

springboot集成线程池的方法是什么

在Spring Boot中集成线程池可以通过以下方法进行:添加依赖:在pom.xml文件中添加以下依赖:org.springframework.bootspring-boot-starter-web配置线程池:在application.pr
2023-10-21

elasticsearch集群zendiscovery的Ping机制是什么

这篇文章主要介绍“elasticsearch集群zendiscovery的Ping机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“elasticsearch集群zendiscovery的Pi
2023-06-30

SpringBoot集成MyBatis的分页插件PageHelper实例代码

昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和Sp
2023-05-31

SpringBoot集成Validation参数校验的方法是什么

这篇“SpringBoot集成Validation参数校验的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spri
2023-06-26

springboot集成mybatis plus和dynamic-datasource的方法是什么

这篇文章主要介绍“springboot集成mybatis plus和dynamic-datasource的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot集成mybati
2023-06-26

SpringBoot集成Druid实现监控功能的示例代码

本文详细介绍了如何在SpringBoot应用程序中集成Druid以实现监控功能。Druid提供了一个控制台,用于监控数据库性能、SQL查询和系统资源。通过添加Druid依赖项、配置数据源、创建配置文件、启用控制台和运行应用程序,开发人员可以轻松启用Druid监控。Druid提供实时监控、SQL查询监控和系统资源监控等优点,帮助识别和优化数据库性能。
SpringBoot集成Druid实现监控功能的示例代码
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录