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、鸿蒙学习——管理通知角标
针对未读的通知,系统提供了角标设置接口,将未读通知个数显示在桌面图标的右上角角标上。 通知增加时,角标上显示的未读通知个数需要增加。 通知被查看后,角标上显示的未读通知个数需要减少,没有未读通知时࿰…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...