elasticsearch数据存储结构,springboot集成elasticsearch
创始人
2024-02-21 21:47:11

一、数据存储结构

在这里插入图片描述
结合数据库的结构理解起来就会比较清楚:
1)索引(Index)=>数据库(Database)。
2)类型(Type)=>表(Table)。
3)文档(Document)=>表中的一行记录(Row)。
4)属性(Field)=>字段列(Column)。

  1. 索引索引是含义相同的属性文档的集合,是Elasticsearch的一个逻辑存储,可以理解为关系型数据库中的数据库。
  2. 类型文档可以分组,比如员工信息。这种分组就叫类型,它是虚拟的逻辑分组,用来过滤文档数据。
  3. 文档文档是可以被索引的基本数据单位,存储在Elasticsearch中的主要实体叫文档,可以理解为关系型数据库中表的一行记录。

二、springboot集成elasticsearch

1.安装elasticsearch
ES的安装环境最好是类Linux操作系统,本书中使用mac。从ES 7.x版本开始,其发行的安装包中就已经内置了JDK。如果用户对JDK有独特的要求,可以修改其启动脚本进行依赖配置。为简单起见,本节安装ES时使用内置的JDK。
brew安装jdk8
安装brew包管理工具,就可以直接命令安装es
es安装步骤、这个我失败了,我用下面的步骤成功
es安装步骤
es启动失败,指定es启动jdk版本
https://www.cnblogs.com/blogxiao/p/16900204.html
上面的博客我都安装失败了
我安装成功用的这个方法
启动后无法访问
在这里插入图片描述Linux系统安装,参考这本书
在这里插入图片描述
2.引入依赖

org.springframework.bootspring-boot-starter-data-elasticsearch

在这里插入图片描述3.配置连接地址
在这里插入图片描述

spring.elasticsearch.rest.uris=http://127.0.0.1:9200

4.创建文档对象
创建实体对象类Book,然后使用@Document注解定义文档对象,示例代码如下:

package com.yangjunbo.JPADemo.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 = "book" , replicas = 0)
public class Book {@Idprivate Long id;@Field(analyzer = "ik_max_word",type = FieldType.Text)private String bookName;@Field(type = FieldType.Keyword)private String author;private float price;private int page;@Field(type = FieldType.Keyword, fielddata = true)private String category;// 省略get、set方法public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public Book(){}public Book(Long id,String bookName, String author,float price,int page,String category) {this.id = id;this.bookName = bookName;this.author = author;this.price = price;this.page = page;this.category = category;}@Overridepublic String toString() {final StringBuilder sb = new StringBuilder( "{\"Book\":{" );sb.append( "\"id\":" ).append( id );sb.append( ",\"bookName\":\"" ).append( bookName ).append( '\"' );sb.append( ",\"page\":\"" ).append( page ).append( '\"' );sb.append( ",\"price\":\"" ).append( price ).append( '\"' );sb.append( ",\"category\":\"" ).append( category ).append( '\"' );sb.append( ",\"author\":\"" ).append( author ).append( '\"' );sb.append( "}}" );return sb.toString();}
}

在这里插入图片描述

5.创建操作的repository

package com.yangjunbo.JPADemo.repository;import com.yangjunbo.JPADemo.pojo.Book;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import java.util.List;public interface BookRepository extends ElasticsearchRepository {List findByBookNameLike(String bookName);
}

在这里插入图片描述

通过上面的示例代码,我们发现其使用方式和JPA的语法是一样的。

6.创建测试方法测试

package com.yangjunbo.JPADemo;import com.yangjunbo.JPADemo.pojo.Book;
import com.yangjunbo.JPADemo.repository.BookRepository;
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.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
public class TestSave {@Autowiredprivate BookRepository repository;@Testpublic void testSave() {Book book = new Book();book.setId((long) 1);book.setBookName("西游记");book.setAuthor("吴承恩");repository.save(book);Book newbook=repository.findById(1).orElse(null);System.out.println(newbook);}
}

在这里插入图片描述在这里插入图片描述结果表明索引数据保存成功,并且通过id能查询到保存的索引数据信息,说明在Spring Boot中成功集成Elasticsearch。

7.遇到的问题
当使用springboot和es版本不匹配就会报下面的错
Unable to parse response body for Response{requestLine=PUT /book/_doc/1?timeout=1m HTTP/1.1, host=http://127.0.0.1:9200, response=HTTP/1.1 201 Created}
springboot和elasticsearch的版本
如果启动7点几版本的es失败,提示jdk不清楚开发者,请注意下图的地方点击仍要打开。
在这里插入图片描述
参考书籍《springboot从入门到实战-章为忠著》

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...