spring elasticsearch 按条件删除_SpringBoot2 高级案例(08):整合 ElasticSearch框架,实现高性能搜索引擎...

27f9686e5cdaade33379cb0cab17fcc8.png

一、安装和简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

ElasticSearch 安装教程

二、与SpringBoot2整合

1、核心依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>${spring-boot.version}</version>
</dependency>

2、配置文件

spring:application:name: ware-elastic-searchdata:elasticsearch:# 默认 elasticsearchcluster-name: elasticsearch# 9200作为Http协议,主要用于外部通讯# 9300作为Tcp协议,jar之间就是通过tcp协议通讯cluster-nodes: 192.168.72.130:9300

3、实体类配置

  • Document 配置
加上了@Document注解之后,默认情况下这个实体中所有的属性都会被建立索引、并且分词。
indexName索引名称 理解为数据库名 限定小写
type 理解为数据库的表名称
shards = 5 默认分区数
replicas = 1 每个分区默认的备份数
refreshInterval = "1s" 刷新间隔
indexStoreType = "fs"  索引文件存储类型
  • 代码块
@Document(indexName = "requestlogindex",type = "requestlog")
public class RequestLog {//Id注解Elasticsearch里相应于该列就是主键,查询时可以使用主键查询@Idprivate Long id;private String orderNo;private String userId;private String userName;private String createTime;
}

4、数据交互层

实现ElasticsearchRepository接口。

public interface RequestLogRepository 
extends ElasticsearchRepository<RequestLog,Long> {
}

5、演示案例

数据增加,修改,查询,排序,多条件查询。

@Service
public class RequestLogServiceImpl implements RequestLogService {@Resourceprivate RequestLogRepository requestLogRepository ;@Overridepublic String esInsert(Integer num) {for (int i = 0 ; i < num ; i++){RequestLog requestLog = new RequestLog() ;requestLog.setId(System.currentTimeMillis());requestLog.setOrderNo(DateUtil.formatDate(new Date(),DateUtil.DATE_FORMAT_02)+System.currentTimeMillis());requestLog.setUserId("userId"+i);requestLog.setUserName("张三"+i);requestLog.setCreateTime(DateUtil.formatDate(new Date(),DateUtil.DATE_FORMAT_01));requestLogRepository.save(requestLog) ;}return "success" ;}@Overridepublic Iterable<RequestLog> esFindAll (){return requestLogRepository.findAll() ;}@Overridepublic String esUpdateById(RequestLog requestLog) {requestLogRepository.save(requestLog);return "success" ;}@Overridepublic Optional<RequestLog> esSelectById(Long id) {return requestLogRepository.findById(id) ;}@Overridepublic Iterable<RequestLog> esFindOrder() {// 用户名倒序// Sort sort = new Sort(Sort.Direction.DESC,"userName.keyword") ;// 创建时间正序Sort sort = new Sort(Sort.Direction.ASC,"createTime.keyword") ;return requestLogRepository.findAll(sort) ;}@Overridepublic Iterable<RequestLog> esFindOrders() {List<Sort.Order> sortList = new ArrayList<>() ;Sort.Order sort1 = new Sort.Order(Sort.Direction.ASC,"createTime.keyword") ;Sort.Order sort2 = new Sort.Order(Sort.Direction.DESC,"userName.keyword") ;sortList.add(sort1) ;sortList.add(sort2) ;Sort orders = Sort.by(sortList) ;return requestLogRepository.findAll(orders) ;}@Overridepublic Iterable<RequestLog> search() {// 全文搜索关键字/*String queryString="张三";QueryStringQueryBuilder builder = new QueryStringQueryBuilder(queryString);requestLogRepository.search(builder) ;*//** 多条件查询*/QueryBuilder builder = QueryBuilders.boolQuery()// .must(QueryBuilders.matchQuery("userName.keyword", "历张")) 搜索不到.must(QueryBuilders.matchQuery("userName", "张三")) // 可以搜索.must(QueryBuilders.matchQuery("orderNo", "20190613736278243"));return requestLogRepository.search(builder) ;}
}

三、源代码地址

GitHub地址:知了一笑
https://github.com/cicadasmile/middle-ware-parent
码云地址:知了一笑
https://gitee.com/cicadasmile/middle-ware-parent

c2c26c131fd813e6894f15b50f8bebf5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux创建vnc服务器,五步建立一个VNC Linux服务器

【51CTO快译】VNC(Virtual Network Computing)可以让你登录进到远程服务器的桌面上(相比之下&#xff0c;SSH的X11只能让你在本地机器上打开几个窗口)。这个很有用&#xff0c;设置起来也十分方便。***步我是用的是vnc4(还有其他选项&#xff0c;比如TightVNC)&#xff0c;所以…

python的六大数据类型中可以改变_在python中更改数组的数据类型

我通过生成一组随机数并将它们转换为int类型来创建数组。但是&#xff0c;我不认为我下面的方法是有效的。有没有最好的方法来改变数组中的数据类型&#xff1f;# standard normal distributed random numberscrandom.randn(5,5)carray([[-0.37644781, -0.81347483, -0.3689595…

linux脚本多个条件比较大小,shell脚本-比较两个整数大小

开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。用条件表达式(禁止if)进行判断并以屏幕输出的方式提醒用户比较结果。注意&#xff1a;一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数不对给予提示。read读入方式#…

git 创建webpack项目_webpack项目的搭建及环境构建

现如今&#xff0c;webpack已经快速进入前端开发人员的眼线(从1.0到4.X的版本的更新迭代)&#xff0c;给前端开发也带来了很大的突破&#xff0c;webpack可以分析项目结构&#xff0c;模块化打包机&#xff0c;处理模块化依赖&#xff0c;转换成浏览器可运行代码。废话不多&…

部署Linux服务器实验报告,Linux服务器学习----tomcat 服务配置实验报告(一)

一、实验目的1. 掌握 tomcat 服务的搭建二、实验内容1. 搭建一台缓存 tomcat 服务器三、实验环境1. tomcat 服务器 centos7 对应主机 ip 为 10.10.64.1782. 客户机 win7 对应主机 ip 为 10.10.64.227四、环境搭建在java官网下载Linux的java1.配置Java的变量环境&#xff1a;tar…

python指定条件分类输出_python基础(二)条件判断、循环、格式化输出

继续上一篇&#xff0c;今天主要总结一下条件判断、循环、格式化输出一.条件判断python中条件判断使用if else来判断&#xff0c;多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样&#xff0c;否则就怎么怎么这样&#xff0c;格式如下&#xff1a;score int(…

linux编译框架的搭建,Linux精华篇—CentOS 7.4下源码编译构建LNMP架构

CentOS 7.4搭建LNMP最新版本LNMP&#xff1a;Linux7.4、ngnix1.13.9、mysql5.7.20、php7.1.10目录&#xff1a;第一部分 准备工作第二部分 安装nginx服务第三部分 安装MySQL数据库第四部分 搭建PHP运行环境第五部分 LNMP架构应用(搭建DISCUZ论坛)第一部分 准备工作一&#xff1…

oracle层级关系按列存储_几张图看懂列式存储

最近看到一篇很好资料&#xff0c;里面三言两语配上几个图就把列式存储(Column-based Storage)讲明白了&#xff0c;牛啊&#xff01;最喜欢的就是这种浅显易懂就把背景知识讲得明明白白&#xff0c;而不是长篇大论的讲概念。1 为什么要按列存储列式存储(Columnar or column-ba…

linux fg 命令,Linux fg 命令 command not found fg 命令详解 fg 命令未找到 fg 命令安装 - CommandNotFound ⚡️ 坑否...

显示行号|选择喜欢的代码风格默认GitHubDuneLakeSidePlateauVibrantBlueEightiesTranquilfg 将后台作业放到前台终端运行。fg 命令安装&#xff1a;-bash: fg: command not found#Debianapt-get install bash#Ubuntuapt-get install bash#Alpineapk add bash#Arch Linuxpacman …

wps 宏 禁用_WPS表格如何解除宏禁用

WPS的办公软件个人感觉是挺好的&#xff0c;可惜有一次我在使用WPS表格(相当于Office excel)时&#xff0c;发现居然无法使用宏&#xff0c;怎么办?不用担心接下来学习啦小编举例简单的例子告诉大家WPS表格解除宏禁用的方法。WPS表格解除宏禁用的方法上面我已经给出了插件的下…

linux设备资源分配,基于Linux 简化 AMP 配置使其更方便更动态地分配资源

描述嵌入式系统一般分为两大类&#xff1a;需要硬实时性能的&#xff1b;和不需要硬实时性能的。过去&#xff0c;我们不得不做出艰难抉择&#xff1a; 选择实时操作系统的性能还是我们钟爱的 Linux 系统的丰富特性&#xff0c;然后努力弥补不足之处?如今&#xff0c;嵌入式开…

netcore权限控制_netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源...

基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统特色&#xff1a;用户管理菜单管理角色管理权限管理[精确到按钮])代码生成器如何使用代码克隆到本地 用vs2017或以上版本 打开工程。项目结构如下&#xff1a;找到DbModel下面的初始化db脚本里面包含4张表的schem…

uint16 累加_在一个驱动程序中看到uint16,uint32,unit8,int8是什么意思?有何作用?...

展开全部uint16 &#xff1a;无符32313133353236313431303231363533e59b9ee7ad9431333365643535号16bit整数&#xff0c;uint32&#xff1a;无符号32bit整数&#xff0c;unit8&#xff1a;无符号8bit整数&#xff0c;int8&#xff1a;有符号8bit整数。其作用是程序更加简洁&…

linux qt显示gif图片,QT显示GIF图片

在QT中要显示GIF图片,不能通过单单的添加部件来完成.还需要手动的编写程序.工具:QT Creator新建一个工程,我们先在designer中,添加一个QLabel部件.如下图:将QLabel拉成适当大小.在类cpp函数中添加如下程序:#include "widget.h"#include "ui_widget.h"#incl…

安徽省2012年下半年计算机水平考试(二级 c语言程序设计),安徽省计算机等级二级考试真题C语言2012年12月...

安徽省计算机等级二级考试真题C语言2012年12月2012年下半年全国高等学校(安徽考区)计算机水平考试试卷(二级 C语言程序设计)一、单项选择题(每题1分&#xff0c;共40分)1.微型机的中央处理器主要集成了_____。A)控制器和CPU B)运算器和控制器C)控制器和存储器 D)运算器和CPU2.计…

太阳能电池基本特性实验报告_太阳能电池基本特性研究实验报告的数据处理Ini怎么?太阳能电池基 爱问知识人...

摘要&#xff1a;实验结果的表示&#xff0c;首先取决于实验的物理模式&#xff0c;通过被测量之间的相互关系&#xff0c;考虑实验结果的表示方法。常用到数据处理方法有作图法&#xff0c;列表法&#xff0c;平均值法&#xff0c;最小二乘法等。在处理数据时可根据需要和方便…

C语言存储管理模拟程序设计代码,C语言程序设计教学大纲.doc

目 录《&#xff23;语言程序设计》教学大纲1《实用操作系统》教学大纲5《网页设计》教学大纲8《计算机硬件基础》教学大纲12《计算机网络技术》教学大纲15《数据库技术》教学大纲19《专业英语》教学大纲23《Java程序设计》教学大纲27《组网技术与管理》教学大纲30《WEB编程技术…

ubuntu 禁用透明大页_如何在ubuntu上默认启用透明的大页面?

如何在ubuntu上默认启用透明的大页面&#xff1f;$uname -aLinux yoda 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux~$cd /sys/kernel/mm/transparent_hugepage//sys/kernel/mm/transparent_hugepage$lsdefrag enab…

数学C语言编程,数学规划 (最速下降法,c语言编程).doc

数学规划 (最速下降法,c语言编程).doc数 学 规 划 课 程 设 计题目&#xff1a;用最速下降法求解无约束非线性规划问题姓名&#xff1a;学号&#xff1a;成绩&#xff1a;2011年6月用最速下降法求解无约束非线性规划问题摘要&#xff1a;无约束非线性规划问题是一类重要的数学规…

华三防火墙h3cf100配置双宽带_H3C新一代F100系列防火墙评测报告

【IT168评测】随着网络应用在中小企业的深入发展&#xff0c;中小企业对于网络安全的需求也越来越强烈。而传统的网络安全设备可以帮助中小企业防御病毒、蠕虫及应用层攻击&#xff0c;但是由于缺乏有效的监管&#xff0c;中小企业内网用户的P2P下载、在线视频等大量占用着企业…