您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

如何利用Java代码操作索引库?

时间:2020-09-21 12:13:42  来源:  作者:
如何利用Java代码操作索引库?

 

学习计划安排如下:

  • 学了几天的Elasticserch,但都是它本身的知识点,如何通过JAVA语言去操作它呢?
  • 这就好比以前学数据库,在数据库工具中通过sql语句也能实现增删改查,而在Java中就可以通过jdbc操作数据库。
  • 这里不学原生的Elasticsearch客户端,而是直接学习spring提供的套件:SpringDataElasticsearch。
  • 毕竟要知道,我们以前也基本没用原生的jdbc,而是用的框架,使用起来也简便。

一、创建Demo工程

关于SpringDataElasticsearch介绍:

如何利用Java代码操作索引库?

 

学Java有一个绕不开的坎就是spring,就是主流的很多功能都会看到spring的影子。

我们已经接触过了的就有:SpringMVC、Spring、SpringBoot、SpringCloud。

今天继续接触Spring Data中的一个模块。

为了更好地学习,创建一个demo工程。

通过spring脚手架创建项目

如何利用Java代码操作索引库?

 

①Spring Initializr

使用idea开发工具创建Java项目有多种方式,以前就是通过Maven自行创建一个项目。

也可以通过Spring Initializr创建一个项目。

②说明项目名和Java版本号

项目名为es-demo,使用的jdk8.

③指定项目中需要用到的依赖

这里也就是springDataElasticsearch。

下图也就是创建好后的项目结构

如何利用Java代码操作索引库?

 

该方式创建的好处在于:

我们不用自己导入依赖了,依赖是在创建项目时指定的,也就是创建项目中的步骤③

同时关于启动类、配置文件都帮我们自学创建好了,其实无外乎就是上述三个核心关键步骤:启动类、配置文件、pom文件

该方式创建的坏处在于:

版本问题,项目中可能用的是比较旧的版本,spring创建的版本需要自行修改。

根据自己的需求选择创建方式就好。

此外关于配置文件

如何利用Java代码操作索引库?

 

自行配置的是properties文件,而我们常用的是yml文件,这里将其修改成yml文件。

在配置文件中指定elasticsearch中对应的ip+端口,也就是我们前几天在虚拟机上安装elasticsearch的ip和端口。

二、创建索引和映射

我们以前使用MySQL数据库的时候,在Java中是实体类对应了数据库中的表数据。

同样的道理,现在是索引库了,在Java中也是使用实体类对应对应的索引库。

如何利用Java代码操作索引库?

 

注解@Document说明对应的索引库:

  • indexName:索引库名称叫item。
  • type:索引库类型docs。
  • shards:分片。
  • replicas:副本。

注解@Field说明索引库字段:

类型有很多种,double属于数字型,text和string属于字符型,其中text表示分词,string表示不分词,上述中的keyword其实也就对应着string。

注意images这个字段,index=false表示不需要索引,说明该字段不需要搜索功能。

如何利用Java代码操作索引库?

 

我们以前学数据库的时候,在Java中操作数据库使用到了JdbcTemplate。

现在是要操作索引库,同样的道理,也有一个ElasticsearchTemplate

①createIndex()

创建索引库,参数为实体类的Class对象。

②putMApping()

说明字段映射关系,参数同上。

三、实现增删改查

通过JdbcTemplate实现数据库的增删改查,索引库中用ElasticsearchTemplate。

但是我们不用这种方式而是用其它方式。

毕竟我们现在操作数据库也没用JdbcTemplate而是常常使用通用mapper。

该方法也就类似于通用mapper。

如何利用Java代码操作索引库?

 

在通用mapper中我们是创建一个自定义接口继承mapper接口。

再说明泛型之后,就可以直接使用这个接口完成增删改查操作了。

同样的道理,在这里是也是自定义一个接口继承ElasticsearchRepository接口。

关于这个接口的继承体系图通过上图也能查看到,名称也都是见名知义的。

1新增索引

如何利用Java代码操作索引库?

 

saveAll方法,看它的名字也就知道了其对应的也就是新增操作。

其中关于新增,可以添加一条数据,也可以添加多条数据,例子中使用的是批量操作。

注意:在正式项目中应该是从数据库这种查询到需要实现搜索功能的数据,再将这些数据添加到索引库中,从而实现搜索功能。

我这边为了方便是自己创建的伪数据。

2查询索引

如何利用Java代码操作索引库?

 

findAll也就是查询所有的数据,因为我们添加了多条数据,所以查询结果是一个集合。

增强for循环遍历输出,在控制台上也就能查询到新增的数据。

同样的道理,还有deleteAll删除索引,当然这是都是最简单最基础的几种api,后续更多用法再说明。

最后

行有不得反求诸己,我是@刘小爱

一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。



Tags:Java 索引库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
学习计划安排如下: 学了几天的Elasticserch,但都是它本身的知识点,如何通过Java语言去操作它呢? 这就好比以前学数据库,在数据库工具中通过sql语句也能实现增删改查,而在Java中就...【详细内容】
2020-09-21  Tags: Java 索引库  点击:(77)  评论:(0)  加入收藏
▌简易百科推荐
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(11)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(12)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(10)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(10)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(14)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(17)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(21)  评论:(0)  加入收藏
一、概述观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现,这么想来目标发生情况到观察...【详细内容】
2021-12-13  唯一浩哥    Tags:Java   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条