首页 > 作文

Springboot集成Elasticsearch的步骤与相关功能

更新时间:2023-04-04 02:54:58 阅读: 评论:0

目录
集成配置步骤步骤1:加入 maven 相关依赖步骤2:配置 elasticarch 的卡勒特指挥部怎么打主机和端口步骤3:配置 elaticarch 客户端步骤4:创建文档实体步骤5:创建 controller,rvice, dao 层相关功能实现1. 添加文档2. 修改文档3. 根据id查询文档4. 根据id删除文档5. 查询所有文档6. 条件查询(单个条件)7. 条件查询(多条件)8. 分页查询(降序)9. 分页查询(升序)10. 分页查询11. 范围查询( > )12. 范围查询( >= )13. 范围查询( < )14. 范围查询( <= )elasticarch中对索引的一些常用操作总结

集成配置步骤

步骤1:加入 maven 相关依赖

<!-- 指定 springboot 版本 --><parent>    <groupid>org.springframework.boot</groupid>    <artifactid>spring-boot-starter-parent</artifactid>    <version>2.5.7</version>    <relativepath/></parent> <!-- 相关jar包 --><dependencies>    <!-- springboot核心jar包 -->    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter</artifactid>    </dependency>    <!-- web开发包:包含tomcat和springmvc -->    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter-web</artifactid>    </dependency>    <!-- es 核心包 -->    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter-data-elasticarch</artifactid>    </dependency>    <!-- lombok 实体简化插件 -->    <dependency>        <groupid>org.projectlombok</groupid>        <artifactid>lombok</artifactid>        <optional>true</optional>    </dependency></dependencies>

步骤2:配置 elasticarch 的主机和端口

elasticarch:  host: 127.0.0.1  port: 9200

步骤3:配置 elaticarch 客户端

@data@configuration@configurationproperties(prefix = "elasticarch")public class elasticarchconfig extends abstractelasticarchconfiguration {     private string host;    private integer port;     @override    public resthighlevelclient elasticarchclient() {        return new resthighlevelclient(restclient.builder(new httphost(host, port)));    } }

步骤4:创建文档实体

@data@document(indexname = "urs")public class ur {     @id    @field(type = fieldtype.long)    private long id;     @field(type = fieldtype.text)    private string name;     @field(type = fieldtype.keyword)    private string野刺梨 x;     @field(type = fieldtype.integer)    private integer age;     @field(type = fieldtype.text)    private string address; }

步骤5:创建 controller,rvice, dao 层

(5.1)contrller 层

@restcontroller@requestmapping("/ur")public class urcontroller {     @autowired    private urrvice urrvice; }

(5.2)rvice 层

public interface urrvice { }

(5.3)rvice 实现层(urdao 见 5.4)

@rvicepublic class urrviceimpl implements urrvice {     @autowired    private urdao urdao; }

(5.4)dao 层

@repositorypublic interface urdao extends elasticarchrepository<ur, long> { }

整个相关类创建完成后,项目结构应该如下图所示:

相关功能实现

这里以实际功能举例,并列出 controller 和 rvice 层的实现类写法作为参考。

主流的一些功能,es 已经给你封装,默认给与了支持(如:示例1-6),这些相关的实现不需要我们再写 dao 层,但一些较为业务性的查询,还需要自己手动来写。

1. 添加文档

controller 层:

@postmapping("/save")public string save(@requestbody ur ur) {    long id = system.currenttimemillis();    ur.tid(id);    urrvice.save(ur);    return "新增成功,id为:" + id;}

rvice 层:

@overridepublic long save(ur ur) {    urdao.save(ur);    return ur.getid();}

测试效果:

2. 修改文档

【注】新增文档和修改文档操作,dao 层都是调用的 save() 方法,当 id 不存在的时候,es(elasticarch)就会执行新增操作,当 id 对象已经存在的时候,就会执行修改操作。

controller 层:

@postmapping("/update")public string update(@requestbody ur ur) {    urrvice.save(ur);    return "修改成功";}

rvice 层:

@overridepublic long save(ur ur) {    urdao.save(ur);    return ur.getid();}

测试效果:

3. 根据id查询文档

controller 层:

@getmapping("/{id}")public ur getbyid(@pathvariable("id") long id) {    return urrvice.getbyid(id);}

rvice 层:

@overridepublic ur getbyid(long id) {    optional<ur> find = urdao.findbyid(id);    if (find.isprent()) {        return find.get();    }    return null;}

测试效果:

4. 根据id删除文档

controller 层:

@deletemapping("/{id}")public string deletebyid(@pathvariable("id") long id) {    urr数学教研工作总结vice.deletebyid(id);    return "删除成功";}

rvice 层:

@overridepublic void deletebyid(long id) {    urdao.deletebyid(id);}

测试效果:

5. 查询所有文档

controller 层:

@getmapping("/all")public list<ur> all() {    return urrvice.getall();}

rvice 层:

@overridepublic list<ur> getall() {    iterable<ur> urs = urdao.findall();    if (urs == null) {        return collections.emptylist();    }    list<ur> urlist = new arraylist<ur>();    urs.foreach(o -> urlist.add(o));    return urlist;}

测试效果:

6. 条件查询(单个条件)

如:查询name包含”玛丽”的数据

controller 层:

@getmapping("/listbyname")public list<ur> listbyname(string name) {    return urrvice.getlistbyname(name);}

rvice 层:

@overridepublic list<ur> getlistbyname(string name) {    return urdao.findbyname(name);}

dao 层:测试效果:

7. 条件查询(多条件)

如:查询 name包含”玛丽”,年龄为25的数据。

controller 层:

@getmapping("/listbynameandage")public list<ur> listbynameandage(string name, integer age) {    return urrvice.getlistbynameandage(name, age);}

rvice 层:

@overridepublic list<ur> getlistbynameandage(string name, integer age) {    return urdao.findbynameandage(name, age);}

dao 层:

list<ur> findbynameandage(string name, integer age);

8. 分页查询(降序)

controller 层:

@getmapping("/listorderbyagedesc")江苏大学怎么样public list<ur> listorderbyagedesc() {    return urrvice.getlistorderbyagedesc();}

rvice 层:

@overridepublic list<ur> getlistorderbyagedesc() {    return urdao.findbyorderbyagedesc();}

dao 层:

list<ur> findbyorderbyagedesc();

测试效果:

9. 分页查询(升序)

controller 层:

@getmapping("/listorderbyageasc")public list<ur> listorderbyageasc() {    return urrvice.getlistorderbyageasc();}

rvice 层:

@overridepublic list<ur> getlistorderbyageasc() {    return urdao.findbyorderbyageasc();}

dao 层:

list<ur> findbyorderbyageasc();

测试效果:

10. 分页查询

controller 层:

@getmapping("/page")public page<ur> page(integer pagenum, integer pagesize) {    return urrvice.getpage(pagenum, pagesize);}

rvice 层:

@overridepublic page<ur> getpage(int pagenum, int pagesize) {    // 注意,这里的pagenum是从0开始的,如果要查询第1页数据,pagenum应该为0    pageable pageable = pagerequest.of(pagenum, pagesize);    return urdao.findall(pageable);}

测试效果:

11. 范围查询( > )

controller 层:

@getmapping("/listgreaterthanage")public list<ur> listgreaterthanage(integer age) {    return urrvice.getlistgreaterthanage(age);}

rvice 层:

@overridepublic list<ur> getlistgreaterthanage(integer age) {    return urdao.findbyagegreaterthan(age);}

dao 层:

韩栋个人资料
list<ur> findbyagegreaterthan(integer age);

测试效果:

12. 范围查询( >= )

controller 层:

@getmapping("/listgreaterthanequalage")public list<ur> listgreaterthanequalage(integer age) {    return urrvice.getlistgreaterthanequalage(age);}

rvice 层:

@overridepublic list<ur> getlistgreaterthanequalage(integer age) {    return urdao.findbyagegreaterthanequal(age);}

dao 层:

list<ur> findbyagegreaterthanequal(integer age);

测试效果:

13. 范围查询( < )

controller 层:

@getmapping("/listlessthanage")public list<ur> listlessthanage(integer age) {    return urrvice.getlistlessthanage(age);}

rvice 层:

@overridepublic list<ur> getlistlessthanage(integer age) {    return urdao.findbyagelessthan(age);}

dao 层:

list<ur> findbyagelessthan(integer age);

测试效果:

14. 范围查询( <= )

controller 层:

@getmapping("/listlessthanequalage")public list<ur> listlessthanequalage(integer age) {    return urrvice.getlistlessthanequalage(age);}

rvice 层:

@overridepublic list<ur> getlistlessthanequalage(integer age) {    return urdao.findbyagelessthanequal(age);}

dao 层:

list<ur> findbyagelessthanequal(integer age);

测试效果:

elasticarch中对索引的一些常用操作

1. 获取elasticarch中所有的index:

curl -xget ‘localhost:9200/_cat/indices?v&pretty’

2. 获取某索引下所有的type:

获取elasticarch索引下所有的type定义

curl -xget ‘localhost:9200/elasticarch/_mapping’

3. 删除索引:

删除elasticarch1索引

curl -xdelete ‘localhost:9200/elasticarch1?pretty’

4. 删除某索引下的某type数据:

删除索引elasticarch下的article类型

curl -xdelete ‘http://localhost:9200/elasticarch/article/’

5. 查看某索引的某type下所有的数据:

查找elasticarch索引中所有的类型为company的数据

http://localhost:9200/elasticarch/company/_arch

总结

到此这篇关于springboot集成elasticarch的文章就介绍到这了,更多相关springboot集成elasticarch内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 02:54:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/89bf6375506315aa03a96fec7163a8b5.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Springboot集成Elasticsearch的步骤与相关功能.doc

本文 PDF 下载地址:Springboot集成Elasticsearch的步骤与相关功能.pdf

标签:文档   效果   测试   步骤
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图