ElasticSearch学习记录
服务器操作系统版本:Ubuntu 24.04
Java版本:21
Spring Boot版本:3.3.5
如果打算用GUI,虚拟机安装Ubuntu 24.04,见
虚拟机安装Ubuntu 24.04及其常用软件(2024.7)_ubuntu24.04-CSDN博客文章浏览阅读6.6k次,点赞37次,收藏100次。虚拟机安装Ubuntu 24.04及其常用软件(2024.7)_ubuntu24.04https://blog.csdn.net/weixin_42173947/article/details/140335522
如果打算用纯命令行,见
虚拟机安装Ubuntu 24.04服务器版(命令行版)_ubuntu24.04 download-CSDN博客文章浏览阅读1k次,点赞19次,收藏13次。这个是专门用于服务器使用的,没有GUI,常用软件安装,见虚拟机安装Ubuntu 24.04及其常用软件(2024.7)_ubuntu24.04-CSDN博客这里只记录独特的安装步骤。_ubuntu24.04 downloadhttps://blog.csdn.net/weixin_42173947/article/details/143747375
1 Ubuntu上部署ElasticSearch
准备一台服务器,IP是192.168.100.200
1.1 安装JDK8
首先需要部署JDK8+,这里我使用了JDK8
sudo apt-get install -y openjdk-8-jdk;
1.2 下载ElasticSearch
mkdir -p /home/user/softwares;
cd /home/user/softwares;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.16.1-linux-x86_64.tar.gz;
1.3 解压,改文件夹名
tar -zxvf elasticsearch-8.16.1-linux-x86_64.tar.gz;
mv elasticsearch-8.16.1 elasticsearch;
1.4 修改参数,减少内存消耗量
vim /home/user/softwares/elasticsearch/config/jvm.options;

-Xms1g
-Xmx1g
vim /home/user/softwares/elasticsearch/config/elasticsearch.yml;
node.name: node-1 #配置当前es节点名称(默认是被注释的,并且默认有一个节点名)
cluster.name: my-application #默认是被注释的,并且默认有一个集群名
path.data: /home/user/elasticsearch/data # 数据目录位置
path.logs: /home/user/elasticsearch/logs # 日志目录位置
network.host: 0.0.0.0 #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问cluster.initial_master_nodes: ["node-1", "node-2"] #默认是被注释的 设置master节点列表 用逗号分隔
xpack.security.enabled: false
xpack.security.http.ssl:enabled: false
xpack.security.transport.ssl:enabled: false
mkdir -p /home/user/elasticsearch/data;
mkdir -p /home/user/elasticsearch/logs;
1.5 启动
cd /home/user/softwares/elasticsearch/bin;
nohup ./elasticsearch &
1.6 宿主机访问
http://192.168.100.200:9200/
{"name": "node-1","cluster_name": "my-application","cluster_uuid": "GFf-TSlmQkuV_aceGLv--A","version": {"number": "8.16.1","build_flavor": "default","build_type": "tar","build_hash": "ffe992aa682c1968b5df375b5095b3a21f122bf3","build_date": "2024-11-19T16:00:31.793213192Z","build_snapshot": false,"lucene_version": "9.12.0","minimum_wire_compatibility_version": "7.17.0","minimum_index_compatibility_version": "7.0.0"},"tagline": "You Know, for Search"
}
2 Java连接ElasticSearch环境搭建
2.2 父节点pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sliverbullet</groupId><artifactId>jdk21-maven-test</artifactId><packaging>pom</packaging><version>1.0</version><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>21</java.version><spring-boot.version>3.3.5</spring-boot.version></properties><modules><module>springboot3-test</module><module>rocketmq-test</module><module>elasticsearch-test</module></modules><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</project>
2.3 子节点xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.sliverbullet</groupId><artifactId>jdk21-maven-test</artifactId><version>1.0</version></parent><artifactId>elasticsearch-test</artifactId><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>21</java.version><spring-boot.version>3.3.5</spring-boot.version><fastjson2-version>2.0.53</fastjson2-version><lombok-version>1.18.34</lombok-version><elasticsearch-spring-boot-starter-version>3.4.0</elasticsearch-spring-boot-starter-version><hutool-version>4.6.8</hutool-version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>${fastjson2-version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok-version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>${elasticsearch-spring-boot-starter-version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool-version}</version></dependency></dependencies></project>
3 ElasticSearch基本配置
3.2 application.yml的配置
server:port: 8003
spring:application:name: elasticsearch-testprofiles:active: dev
machine-no: 1
3.3 application-dev.yml的配置
test,prod,自行配置
spring:elasticsearch:uris: http://192.168.100.200:9200
logging:file:path: D:/log/SpringBoot3-Testname: ${logging.file.path}/test.log
4 基本测试
4.1 基本插入
实体类
package com.sliverbullet.bean;import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;import java.math.BigDecimal;
import java.util.Date;@Document(indexName = "employee_info")
public class EmployeeInfo {@Idprivate Long id;/*** 工号*/@Field(name = "job_no")@JsonProperty("job_no")private String jobNo;/*** 姓名*/@Field(name = "name")private String name;/*** 英文名*/@Field(name = "english_name")@JsonProperty("english_name")private String englishName;/*** 工作岗位*/private String job;/*** 性别*/private Integer sex;/*** 年龄*/private Integer age;/*** 薪资*/private BigDecimal salary;/*** 入职时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+08:00")@Field(name = "job_day")@JsonProperty("job_day")private Date jobDay;/*** 备注*/private String remark;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getJobNo() {return jobNo;}public void setJobNo(String jobNo) {this.jobNo = jobNo;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEnglishName() {return englishName;}public void setEnglishName(String englishName) {this.englishName = englishName;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public BigDecimal getSalary() {return salary;}public void setSalary(BigDecimal salary) {this.salary = salary;}public Date getJobDay() {return jobDay;}public void setJobDay(Date jobDay) {this.jobDay = jobDay;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}public EmployeeInfo() {}public EmployeeInfo(Long id, String jobNo, String name, String englishName, String job, Integer sex, Integer age, BigDecimal salary, Date jobDay, String remark) {this.id = id;this.jobNo = jobNo;this.name = name;this.englishName = englishName;this.job = job;this.sex = sex;this.age = age;this.salary = salary;this.jobDay = jobDay;this.remark = remark;}@Overridepublic String toString() {return "EmployeeInfo{" +"id=" + id +", jobNo='" + jobNo + '\'' +", name='" + name + '\'' +", englishName='" + englishName + '\'' +", job='" + job + '\'' +", sex=" + sex +", age=" + age +", salary=" + salary +", jobDay=" + jobDay +", remark='" + remark + '\'' +'}';}
}
实体类实现接口
package com.sliverbullet.repository;import com.sliverbullet.bean.EmployeeInfo;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;public interface EmployeeInfoRepository extends ElasticsearchRepository<EmployeeInfo, Long> {}
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/save")public String save(@RequestBody EmployeeInfo param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);EmployeeInfo employeeInfo = new EmployeeInfo(param.getId(), param.getJobNo(), param.getName(), param.getEnglishName(), param.getJob(), param.getSex(), param.getAge(), param.getSalary(), param.getJobDay(), param.getRemark());EmployeeInfo result = elasticRepository.save(employeeInfo);log.info("【ElasticSearch测试】-【插入结果】:{}", JSONObject.toJSONString(result));return JSONObject.toJSONString(result);}
测试
/*** 基本插入** @return void*/@Testpublic void save() {String url = "http://127.0.0.1:8003/save";JSONObject request = new JSONObject();request.put("id", 6001L);request.put("job_no", "2001");request.put("name", "张三");request.put("english_name", "zhangsan");request.put("job", "Java");request.put("sex", 1);request.put("age", 21);request.put("salary", new BigDecimal("10000.00"));request.put("job_day", new Date());request.put("remark", request.toJSONString());String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("基本同步消息请求结果:{}", resp);}
11:24:04.114 [main] INFO ElasticSearchTest -- 基本同步消息请求结果:{"age":21,"english_name":"ZhangSan","id":6001,"job":"Java","job_day":"2024-12-05 11:24:03.857","job_no":"2001","name":"张三","remark":"remark","salary":10000.00,"sex":1}
2024-12-05T11:24:03.998+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-7] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 11:24:03.998820800
2024-12-05T11:24:04.093+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-7] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【插入结果】:{"age":21,"english_name":"ZhangSan","id":6001,"job":"Java","job_day":"2024-12-05 11:24:03.857","job_no":"2001","name":"张三","remark":"remark","salary":10000.00,"sex":1}
4.2 ID查询
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/find")public String find(@RequestBody EmployeeInfo param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);Optional<EmployeeInfo> employeeInfo = elasticRepository.findById(param.getId());log.info("【ElasticSearch测试】-【单条查询结果】:{}", JSONObject.toJSONString(employeeInfo));return JSONObject.toJSONString(employeeInfo);}
测试
/*** 基本查询** @return void*/@Testpublic void find() {String url = "http://127.0.0.1:8003/find";JSONObject request = new JSONObject();request.put("id", 6001L);String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("基本同步查询请求结果:{}", resp);}
11:25:09.248 [main] INFO ElasticSearchTest -- 基本同步查询请求结果:{"age":21,"english_name":"ZhangSan","id":6001,"job":"Java","job_day":"2024-12-05 11:24:03.857","job_no":"2001","name":"张三","remark":"remark","salary":10000.0,"sex":1}
2024-12-05T11:25:09.223+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-5] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 11:25:09.223267400
2024-12-05T11:25:09.234+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-5] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【单条查询结果】:{"age":21,"english_name":"ZhangSan","id":6001,"job":"Java","job_day":"2024-12-05 11:24:03.857","job_no":"2001","name":"张三","remark":"remark","salary":10000.0,"sex":1}
4.3 ID修改
其实修改和插入是一个接口
测试
/*** 基本插入** @return void*/@Testpublic void save() {String url = "http://127.0.0.1:8003/save";JSONObject request = new JSONObject();request.put("id", 6001L);request.put("job_no", "2001");request.put("name", "李四");request.put("english_name", "LiSi");request.put("job", "Java");request.put("sex", 1);request.put("age", 21);request.put("salary", new BigDecimal("12000.00"));request.put("job_day", new Date());request.put("remark", "remark");String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("基本同步消息请求结果:{}", resp);}
11:46:45.086 [main] INFO ElasticSearchTest -- 基本同步消息请求结果:{"age":21,"english_name":"LiSi","id":6001,"job":"Java","job_day":"2024-12-05 11:46:44.908","job_no":"2001","name":"李四","remark":"remark","salary":12000.00,"sex":1}
2024-12-05T11:46:45.039+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-9] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 11:46:45.039450500
2024-12-05T11:46:45.073+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-9] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【插入结果】:{"age":21,"english_name":"LiSi","id":6001,"job":"Java","job_day":"2024-12-05 11:46:44.908","job_no":"2001","name":"李四","remark":"remark","salary":12000.00,"sex":1}
查询
11:47:47.040 [main] INFO ElasticSearchTest -- 基本同步查询请求结果:{"age":21,"english_name":"LiSi","id":6001,"job":"Java","job_day":"2024-12-05 11:46:44.908","job_no":"2001","name":"李四","remark":"remark","salary":12000.0,"sex":1}
2024-12-05T11:47:47.022+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 11:47:47.022578700
2024-12-05T11:47:47.027+08:00 INFO 31564 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【单条查询结果】:{"age":21,"english_name":"LiSi","id":6001,"job":"Java","job_day":"2024-12-05 11:46:44.908","job_no":"2001","name":"李四","remark":"remark","salary":12000.0,"sex":1}
4.4 ID删除
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/delete")public String delete(@RequestBody EmployeeInfo param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);elasticRepository.deleteById(param.getId());JSONObject result = new JSONObject();result.put("msg", "success");log.info("【ElasticSearch测试】-【单条删除结果】:{}", result.toJSONString());return result.toJSONString();}
测试
/*** 基本删除** @return void*/@Testpublic void delete() {String url = "http://127.0.0.1:8003/delete";JSONObject request = new JSONObject();request.put("id", 6001L);String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("基本删除请求结果:{}", resp);}
11:53:49.456 [main] INFO ElasticSearchTest -- 基本删除请求结果:{"msg":"success"}
2024-12-05T11:53:49.206+08:00 INFO 49360 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 11:53:49.206563800
2024-12-05T11:53:49.438+08:00 INFO 49360 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【单条删除结果】:{"msg":"success"}
查询
11:54:56.173 [main] INFO ElasticSearchTest -- 基本同步查询请求结果:null
2024-12-05T11:54:56.139+08:00 INFO 49360 --- [elasticsearch-test] [nio-8003-exec-3] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 11:54:56.139854100
2024-12-05T11:54:56.160+08:00 INFO 49360 --- [elasticsearch-test] [nio-8003-exec-3] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【单条查询结果】:null
4.5 批量插入
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/saveBatch")public String saveBatch(@RequestBody List<EmployeeInfo> param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);Iterable<EmployeeInfo> result = elasticRepository.saveAll(param);log.info("【ElasticSearch测试】-【批量插入结果】:{}", JSONObject.toJSONString(result));return JSONObject.toJSONString(result);}
测试
/*** 批量插入** @return void*/@Testpublic void saveBatch() {String url = "http://127.0.0.1:8003/saveBatch";List<JSONObject> list = new ArrayList<>();JSONObject request = new JSONObject();request.put("id", 6002L);request.put("job_no", "2001");request.put("name", "刘二");request.put("english_name", "LiuEr");request.put("job", "Java");request.put("sex", 1);request.put("age", 21);request.put("salary", new BigDecimal("12000.00"));request.put("job_day", new Date());request.put("remark", "remark");list.add(request);request = new JSONObject();request.put("id", 6003L);request.put("job_no", "2002");request.put("name", "王五");request.put("english_name", "WangWu");request.put("job", "Python");request.put("sex", 2);request.put("age", 25);request.put("salary", new BigDecimal("11000.00"));request.put("job_day", new Date());request.put("remark", "remark");list.add(request);String resp = HttpUtil.post(url, JSONObject.toJSONString(list));log.info("批量插入请求结果:{}", resp);}
14:32:22.660 [main] INFO ElasticSearchTest -- 批量插入请求结果:[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.00,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.00,"sex":2}]
2024-12-05T14:32:22.440+08:00 INFO 50596 --- [elasticsearch-test] [nio-8003-exec-4] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 14:32:22.440133900
2024-12-05T14:32:22.643+08:00 INFO 50596 --- [elasticsearch-test] [nio-8003-exec-4] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【批量插入结果】:[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.00,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.00,"sex":2}]
4.6 全量查询
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/findAll")public String findAll(@RequestBody EmployeeInfo param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);Iterable<EmployeeInfo> result = elasticRepository.findAll();log.info("【ElasticSearch测试】-【全量查询结果】:{}", JSONObject.toJSONString(result));return JSONObject.toJSONString(result);}
测试
/*** 全量查询** @return void*/@Testpublic void findAll() {String url = "http://127.0.0.1:8003/findAll";JSONObject request = new JSONObject();String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("全量查询请求结果:{}", resp);}
14:43:12.007 [main] INFO ElasticSearchTest -- 全量查询请求结果:{"content":[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.0,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.0,"sex":2}],"empty":false,"first":true,"last":true,"number":0,"numberOfElements":2,"pageable":{"offset":0,"pageNumber":0,"pageSize":2,"paged":true,"sort":{"empty":true,"sorted":false,"unsorted":true},"unpaged":false},"size":2,"sort":{"empty":true,"sorted":false,"unsorted":true},"totalElements":2,"totalPages":1}
2024-12-05T14:43:11.418+08:00 INFO 16640 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 14:43:11.418807900
2024-12-05T14:43:11.989+08:00 INFO 16640 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【全量查询结果】:{"content":[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.0,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.0,"sex":2}],"empty":false,"first":true,"last":true,"number":0,"numberOfElements":2,"pageable":{"offset":0,"pageNumber":0,"pageSize":2,"paged":true,"sort":{"empty":true,"sorted":false,"unsorted":true},"unpaged":false},"size":2,"sort":{"empty":true,"sorted":false,"unsorted":true},"totalElements":2,"totalPages":1}
4.6 分页排序查询
也有单独的按Sort查全部
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/findAllWithPage")public String findAllWithPage(@RequestBody JSONObject param) {Pageable page = PageRequest.of(param.getIntValue("pageNum"), param.getIntValue("pageSize"), Sort.by(param.getString("sort")).ascending());DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);Iterable<EmployeeInfo> result = elasticRepository.findAll(page);log.info("【ElasticSearch测试】-【ascending查询结果】:{}", JSONObject.toJSONString(result));page = PageRequest.of(param.getIntValue("pageNum"), param.getIntValue("pageSize"), Sort.by(param.getString("sort")).descending());result = elasticRepository.findAll(page);log.info("【ElasticSearch测试】-【descending查询结果】:{}", JSONObject.toJSONString(result));return JSONObject.toJSONString(result);}
测试
/*** 分页排序查询** @return void*/@Testpublic void findAllWithPage() {String url = "http://127.0.0.1:8003/findAllWithPage";JSONObject request = new JSONObject();request.put("pageNum", 1);request.put("pageSize", 1);request.put("sort", "age");String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("分页查询请求结果:{}", resp);}
15:17:17.235 [main] INFO ElasticSearchTest -- 分页查询请求结果:{"content":[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.0,"sex":1}],"empty":false,"first":false,"last":true,"number":1,"numberOfElements":1,"pageable":{"offset":1,"pageNumber":1,"pageSize":1,"paged":true,"sort":{"empty":false,"sorted":true,"unsorted":false},"unpaged":false},"size":1,"sort":{"empty":false,"sorted":true,"unsorted":false},"totalElements":2,"totalPages":2}
2024-12-05T15:17:17.023+08:00 INFO 48044 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 15:17:17.023856800
2024-12-05T15:17:17.206+08:00 INFO 48044 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【ascending查询结果】:{"content":[{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.0,"sex":2}],"empty":false,"first":false,"last":true,"number":1,"numberOfElements":1,"pageable":{"offset":1,"pageNumber":1,"pageSize":1,"paged":true,"sort":{"empty":false,"sorted":true,"unsorted":false},"unpaged":false},"size":1,"sort":{"empty":false,"sorted":true,"unsorted":false},"totalElements":2,"totalPages":2}
2024-12-05T15:17:17.217+08:00 INFO 48044 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【descending查询结果】:{"content":[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.0,"sex":1}],"empty":false,"first":false,"last":true,"number":1,"numberOfElements":1,"pageable":{"offset":1,"pageNumber":1,"pageSize":1,"paged":true,"sort":{"empty":false,"sorted":true,"unsorted":false},"unpaged":false},"size":1,"sort":{"empty":false,"sorted":true,"unsorted":false},"totalElements":2,"totalPages":2}
4.7 根据多个ID全量查询
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/findAllById")public String findAllById(@RequestBody List<Long> param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);Iterable<EmployeeInfo> result = elasticRepository.findAllById(param);log.info("【ElasticSearch测试】-【findAllById查询结果】:{}", JSONObject.toJSONString(result));return JSONObject.toJSONString(result);}
测试
/*** 根据多个Id全量查询** @return void*/@Testpublic void findAllById() {String url = "http://127.0.0.1:8003/findAllById";List<Long> longList = new ArrayList<>();longList.add(6002L);longList.add(6003L);String resp = HttpUtil.post(url, JSONObject.toJSONString(longList));log.info("根据多个Id全量查询:{}", resp);}
15:28:08.755 [main] INFO ElasticSearchTest -- 根据多个Id全量查询:[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.0,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.0,"sex":2}]
2024-12-05T15:28:01.193+08:00 INFO 30624 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 15:28:01.193874800
2024-12-05T15:28:01.406+08:00 INFO 30624 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【findAllById查询结果】:[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 14:32:10.014","job_no":"2001","name":"刘二","remark":"remark","salary":12000.0,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 14:32:10.014","job_no":"2002","name":"王五","remark":"remark","salary":11000.0,"sex":2}]
4.8 根据多个ID全量查询以及清空数据
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/deleteAll")public String deleteAll(@RequestBody List<Long> param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);elasticRepository.deleteAllById(param);elasticRepository.deleteAll();JSONObject result = new JSONObject();result.put("msg", "success");log.info("【ElasticSearch测试】-【全部删除结果】:{}", result.toJSONString());return JSONObject.toJSONString(result);}
deleteAllById,根据多个ID删除,deleteAll,直接清空全部数据
测试
/*** 根据多个Id删除** @return void*/@Testpublic void deleteAll() {String url = "http://127.0.0.1:8003/deleteAll";List<Long> longList = new ArrayList<>();longList.add(6002L);longList.add(6003L);String resp = HttpUtil.post(url, JSONObject.toJSONString(longList));log.info("根据多个Id全量查询:{}", resp);}
16:02:47.398 [main] INFO ElasticSearchTest -- 根据多个Id全量查询:{"msg":"success"}
2024-12-05T16:02:47.199+08:00 INFO 50652 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 16:02:47.199050000
2024-12-05T16:02:47.367+08:00 INFO 50652 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【全部删除结果】:{"msg":"success"}
16:16:41.993 [main] INFO ElasticSearchTest -- 全量查询请求结果:{"content":[],"pageable":"INSTANCE","last":true,"totalPages":1,"totalElements":0,"size":0,"number":0,"sort":{"empty":true,"sorted":false,"unsorted":true},"numberOfElements":0,"first":true,"empty":true}
4.9 获取数量,某个ID是否存在
Controller层
@Resourceprivate EmployeeInfoRepository elasticRepository;@RequestMapping("/other")public String other(@RequestBody EmployeeInfo param) {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSS");LocalDateTime localDateTime = LocalDateTime.now();String formattedDate = dateTimeFormatter.format(localDateTime);log.info("【SpringBoot3测试】-【ElasticSearch测试】:{}", formattedDate);JSONObject result = new JSONObject();result.put("count", elasticRepository.count());result.put("exist", elasticRepository.existsById(param.getId()));log.info("【ElasticSearch测试】-【other结果】:{}", result.toJSONString());return JSONObject.toJSONString(result);}
重新插入,然后测试
测试
/*** 其他** @return void*/@Testpublic void other() {String url = "http://127.0.0.1:8003/other";JSONObject request = new JSONObject();request.put("id", 6002L);String resp = HttpUtil.post(url, JSONObject.toJSONString(request));log.info("其他:{}", resp);}
16:25:38.079 [main] INFO ElasticSearchTest -- 其他:{"count":2,"exist":true}
2024-12-05T16:25:20.747+08:00 INFO 20068 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 16:25:20.747816800
2024-12-05T16:25:20.915+08:00 INFO 20068 --- [elasticsearch-test] [nio-8003-exec-1] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【批量插入结果】:[{"age":21,"english_name":"LiuEr","id":6002,"job":"Java","job_day":"2024-12-05 16:25:20.567","job_no":"2001","name":"刘二","remark":"remark","salary":12000.00,"sex":1},{"age":25,"english_name":"WangWu","id":6003,"job":"Python","job_day":"2024-12-05 16:25:20.567","job_no":"2002","name":"王五","remark":"remark","salary":11000.00,"sex":2}]
2024-12-05T16:25:37.994+08:00 INFO 20068 --- [elasticsearch-test] [nio-8003-exec-3] c.s.controller.ElasticSearchController : 【SpringBoot3测试】-【ElasticSearch测试】:2024-12-05 16:25:37.994253400
2024-12-05T16:25:38.066+08:00 INFO 20068 --- [elasticsearch-test] [nio-8003-exec-3] c.s.controller.ElasticSearchController : 【ElasticSearch测试】-【other结果】:{"count":2,"exist":true}
相关文章:
ElasticSearch学习记录
服务器操作系统版本:Ubuntu 24.04 Java版本:21 Spring Boot版本:3.3.5 如果打算用GUI,虚拟机安装Ubuntu 24.04,见 虚拟机安装Ubuntu 24.04及其常用软件(2024.7)_ubuntu24.04-CSDN博客文章浏览阅读6.6k次࿰…...
LabVIEW算法执行时间评估与Windows硬件支持
在设计和实现复杂系统时,准确估算算法的执行时间是关键步骤,尤其在实时性要求较高的应用中。这一评估有助于确定是否需要依赖硬件加速来满足性能需求。首先需要对算法进行时间复杂度分析并进行实验测试,了解其在Windows系统中的运行表现。根据…...
经验帖 | Matlab安装成功后打不开的解决方法
最近在安装Matlab2023时遇到了一个问题: 按照网上的安装教程成功安装 在打开软件时 界面闪一下就消失 无法打开 但是 任务管理器显示matlab在运行中 解决方法如下: matlab快捷方式–>右键打开属性–>目标 填写许可证文件路径 D:\MATLAB\MatlabR20…...
Ubuntu Linux 文件、目录权限问题
本文为Ubuntu Linux操作系统- 第五弹 此文是在上期文件目录的内容操作基础上接着讲权限问题 上期回顾:Ubuntu Linux 目录和文件的内容操作 文件访问者身份与文件访问权限 Linux文件结构 所有者(属主)所属组(属组)其他…...
LabVIEW密码保护与反编译的安全性分析
在LabVIEW中,密码保护是一种常见的源代码保护手段,但其安全性并不高,尤其是在面对专业反编译工具时。理论上,所有软件的反编译都是可能的,尽管反编译不一定恢复完全的源代码,但足以提取程序的核心功能和算法…...
yolo11经验教训----之一
一、格式转换 可以把python中的.pt文件,导出为libtorch识别的格式: model YOLO("yolo11n.pt") model.export(format"torchscript") 二、查看结构 在c中,我用qt,这样做的: #include "…...
异步处理优化:多线程线程池与消息队列的选择与应用
目录 一、异步处理方式引入 (一)异步业务识别 (二)明确异步处理方式 二、多线程线程池(Thread Pool) (一)工作原理 (二)直面优缺点和适用场景 1.需要快…...
Hadoop生态圈框架部署 伪集群版(一)- Linux操作系统安装及配置
文章目录 前言一、下载CentOS镜像1. 下载 二、创建虚拟机hadoop三、CentOS安装与配置1. 安装CentOS2. 配置虚拟网络及虚拟网卡2.1 配置虚拟网络2.2 配置虚拟网卡 3. 安装 SSH 远程连接工具 FinalShell3.1 简介3.2 下载和安装3.2.1 下载3.2.2 安装 3.3 查看动态ip地址3.4 使用Fi…...
Go的Gin比java的Springboot更加的开箱即用?
前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…...
pickle常见Error解决
1. pickle OverflowError: cannot serialize a bytes object larger than 4 GiB 进行pickle.dump时出现上述错误,可以加上“protocol4”参数。依据:https://docs.python.org/3/library/pickle.html#data-stream-format 2. pickle EOFError: Ran out of…...
认识Java数据类型和变量
数据类型分类 基本数据类型(8个): 整数型 byte 8位 short 16位 int 32位 long 64位 默认整数类型是int类型 小数型/浮点型 float【单精度32位】 double【双进度64位】 字符型 char 16位 只能表示单个字符 布尔型 boolean 1位 只能有两个值 true 【真】 false 【…...
Qt开发技巧(二十四)滚动部件的滑动问题,Qt设置时区问题,自定义窗体样式不生效问题,编码格式问题,给按钮左边加个图,最小化后的卡死假象
继续记录一些Qt开发中的技巧操作: 1.滚动部件的滑动问题 再Linux嵌入式设备上,有时候一个页面的子部件太多,一屏放不下是需要做页面滑动,可以使用“QScrollArea”控件,拖来一个“QScrollArea”控件,将子部件…...
SHELL----正则表达式
一、文本搜索工具——grep grep -参数 条件 文件名 其中参数有以下: -i 忽略大小写 -c 统计匹配的行数 -v 取反,不显示匹配的行 -w 匹配单词 -E 等价于 egrep ,即启用扩展正则表达式 -n 显示行号 -rl 将指定目录内的文件打…...
44.5.【C语言】辨析“数组指针”和“指针数组”
目录 1.数组指针 2.指针数组 执行结果 底层分析 1.数组指针 从语文的角度理解,"数组"修饰"指针".因此数组指针是指针 例如以下代码 #include <stdio.h> int main() {char a[5] { "ABCDE" };return 0;} 其中a就是数组指针,因为数…...
node.js基础学习-express框架-路由及中间件(十)
一、前言 Express 是一个简洁、灵活的 Node.js Web 应用框架。它基于 Node.js 的内置 HTTP 模块构建,提供了一系列用于构建 Web 应用程序和 API 的功能,使开发者能够更高效地处理 HTTP 请求和响应,专注于业务逻辑的实现。 其特点包括简单易用…...
使用MSYS搭建linux开发环境踩坑笔记
前言: 使用linux系统或虚拟机进行嵌入式linux开发是常规方法; 使用MSYS是用于尝鲜和研究。 由于windows和linux的差异,使用MSYS代替Linux虚拟机会遇到很多坑。 主要原因在于: 1. windows和linux文件系统的差异:win不…...
vue3+ts+vite+ElementPlus上传进度条实时更新(UPLoad和progress)。
需求: 上传文件时,展示进度条实时更新: 下面是代码片段: <!-- 添加媒体弹窗 -- 上传 --><el-dialog v-model"centerDialogVisible" title"媒体信息" width"700" :close-on-click-modal"false&qu…...
AspNet WebAPI 模型绑定问题
继承System.Web.Http.ApiController的Action的Model如果被[Serializable]定义,会导致Model的字段无法绑定。 Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll [Serializable] public class Model {public string id { get; set; } }public MyA…...
Android 图形系统之七:SurfaceFlinger
一. 引言 什么是 SurfaceFlinger?SurfaceFlinger 的核心作用和地位?为什么需要了解 SurfaceFlinger? 二. SurfaceFlinger 的基本概念 Surface 和 SurfaceFlinger 的关系SurfaceFlinger 与图形渲染(OpenGL ES 和 Vulkan…...
14、鸿蒙学习——管理通知角标
针对未读的通知,系统提供了角标设置接口,将未读通知个数显示在桌面图标的右上角角标上。 通知增加时,角标上显示的未读通知个数需要增加。 通知被查看后,角标上显示的未读通知个数需要减少,没有未读通知时࿰…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
[10-1]I2C通信协议 江协科技学习笔记(17个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...
