ElasticSearch入门(六)SpringBoot2

news2024/9/26 1:27:07

private String author;

@Field(name = “word_count”, type = FieldType.Integer)

private Integer wordCount;

/**

    1. Jackson日期时间序列化问题:
  • Cannot deserialize value of type java.time.LocalDateTime from String “2020-06-04 15:07:54”: Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text ‘2020-06-04 15:07:54’ could not be parsed at index 10

  • 解决:@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

    1. 日期在ES存为long类型
  • 解决:需要加format = DateFormat.custom

    1. java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=5, YearOfEra=2020, MonthOfYear=6},ISO of type java.time.format.Parsed
  • 解决:pattern = “uuuu-MM-dd HH:mm:ss” 即将yyyy改为uuuu,或8uuuu: pattern = “8uuuu-MM-dd HH:mm:ss”

  • 参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-to-java-time.html#java-time-migration-incompatible-date-formats

*/

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

@Field(name = “publish_date”, type = FieldType.Date, format = DateFormat.custom, pattern = “uuuu-MM-dd HH:mm:ss”)

private LocalDateTime publishDate;

}

核心方法

package com.heartsuit.repository;

import java.util.List;

import com.heartsuit.domain.Book;

import org.springframework.data.elasticsearch.annotations.Query;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/**

  • @Author Heartsuit

  • @Date 2020-06-12

*/

public interface BookRepository extends ElasticsearchRepository<Book, String> {

List findByAuthor(String author);

List findByAuthorLike(String author);

List findByTitle(String author);

List findByWordCount(Integer wordCount);

List findByAuthorAndTitle(String author, String title);

@Query(“{“bool” : {“must” : {“match” : {“title” : “?0”}}}}”)

List queryByTitle(String keyword);

}

测试接口

package com.heartsuit.controller;

import com.heartsuit.domain.Book;

import com.heartsuit.repository.BookRepository;

import lombok.extern.slf4j.Slf4j;

import org.springframework.format.annotation.DateTimeFormat;

import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;

import java.util.*;

/**

  • @Author Heartsuit

  • @Date 2020-06-12

*/

@RestController

@RequestMapping(“/books”)

@Slf4j

public class BookController {

private final BookRepository bookRepository;

public BookController(BookRepository bookRepository) {

this.bookRepository = bookRepository;

}

@GetMapping(“/all”)

public List findAll() {

Iterable result = bookRepository.findAll();

Iterator res = result.iterator();

List books = new ArrayList<>();

while (res.hasNext()) {

books.add(res.next());

}

log.info(“List All, Size: {}”, books.size());

return books;

}

/**

  • 新增

  • @param book

  • @return

*/

@PostMapping(“/”)

public Book create(@RequestBody Book book) {

log.info(“Saved OK: {}”, book.getTitle());

return bookRepository.save(book);

}

/**

  • 根据ID查询

  • @param id

  • @return

*/

@GetMapping(“/{id}”)

public Book findById(@PathVariable(“id”) String id) {

log.info(“Query ID: {}”, id);

Book orElse = bookRepository.findById(id).orElse(null);

return orElse;

}

/**

  • 根据ID修改

  • @param id

  • @param title

  • @param author

  • @param wordCount

  • @param publishDate

  • @return

  • Note: 报错:Failed to convert value of type ‘java.lang.String’ to required type ‘java.time.LocalDateTime’;

  • 解决:在参数前添加注解:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

*/

@PutMapping(“/{id}”)

public Book update(@PathVariable(“id”) String id,

@RequestParam(name = “title”, required = false) String title,

@RequestParam(name = “author”, required = false) String author,

@RequestParam(name = “wordCount”, required = false) Integer wordCount,

@RequestParam(name = “publishDate”, required = false) @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”) LocalDateTime publishDate) {

Optional optional = bookRepository.findById(id);

if (optional.isPresent()) {

Book book = optional.get();

if (title != null) {

book.setTitle(title);

}

if (author != null) {

book.setAuthor(author);

}

if (wordCount != null) {

book.setWordCount(wordCount);

}

if (publishDate != null) {

book.setPublishDate(publishDate);

}

return bookRepository.save(book);

}

return null;

}

/**

  • 根据ID删除

  • @param id

*/

@DeleteMapping(“/{id}”)

public void delete(@PathVariable(“id”) String id) {

log.info(“Deleted ID: {}”, id);

bookRepository.deleteById(id);

}

/**

  • 删除所有

*/

@PostMapping(“/clear”)

public void clear() {

log.info(“Delete All!”);

bookRepository.deleteAll();

}

/**

  • 根据作者查询

  • @param author

  • @return

*/

@PostMapping(“/author”)

public List byAuthor(String author) {

log.info(“By Author”);

return bookRepository.findByAuthor(author);

}

/**

  • 根据作者检索

  • @param author

  • @return

*/

@PostMapping(“/author/like”)

public List byAuthorLike(String author) {

log.info(“By Author Like”);

return bookRepository.findByAuthorLike(author);

}

/**

  • 根据标题查询

  • @param title

  • @return

*/

@PostMapping(“/title”)

public List byTitle(String title) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后我们该如何学习?

1、看视频进行系统学习

这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

2、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

Spring源码深度解析:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Mybatis 3源码深度解析:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Redis学习笔记:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

Spring Boot核心技术-笔记:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

3、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

人生短暂,别稀里糊涂的活一辈子,不要将就。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
346006947)]

Spring Boot核心技术-笔记:

[外链图片转存中…(img-pPR5dRJv-1713346006948)]

3、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

[外链图片转存中…(img-dgXz1dwW-1713346006948)]

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

人生短暂,别稀里糊涂的活一辈子,不要将就。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

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

相关文章

Django文件上传

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 本节主要介…

【计算机网络】IP地址和子网掩码(子网掩码篇)

个人主页:【😊个人主页】 系列专栏:【❤️计算机网络】 文章目录 前言什么是子网掩码?子网掩码的组成组成规则表示方法子网掩码的分类标准(默认)子网掩码:变长子网掩码(VLSM):全零和全一子网掩码:子网掩码的计算确定IP地址类别及默认子网掩码计算子网掩码根据子网数…

橙单中台化低代码生成器

​橙单中台化低代码生成器 在当今快速发展的软件开发领域&#xff0c;橙单中台化低代码生成器凭借其强大的功能和灵活的架构&#xff0c;成为了开发者不可或缺的利器。本文将介绍橙单的基本信息、特点以及如何快速部署和使用。 软件简介 橙单中台化低代码生成器是一款开源的低…

被华为的AI扩图震惊到,超自然超好看!

美颜、P图对大家来说都不陌生&#xff0c;但是近期在互联网实火的各种AI扩图你了解多少&#xff1f;它既能满足图片构图时进行延伸美化&#xff0c;又能在未知的创意里无限探索。 近期&#xff0c;华为Pura 70系列手机获推HarmonyOS 4.2.0.172 更新&#xff0c;华为Pura 70 Pr…

事务性邮件API的功能优势?考虑哪些指标?

事务性邮件API的性能如何优化&#xff1f;怎么选择邮件API接口&#xff1f; 在当今数字化时代&#xff0c;企业需要一种高效、可靠的方法与客户沟通。事务性邮件API成为解决这一需求的重要工具。AokSend将探讨事务性邮件API的功能优势及考虑的关键指标。 事务性邮件API&#…

如何在 Kubernetes 中使用 ClickHouse 和 JuiceFS

ClickHouse 结合 JuiceFS 一直是一个热门的组合&#xff0c;社区中有多篇实践案例。今天的文章来自美国公司 Altinity&#xff0c;一家提供 ClickHouse 商业服务的企业&#xff0c;作者是 Vitaliy Zakaznikov&#xff0c;他尝试了这个组合并公开了过程中使用的代码。原文有两篇…

基于DreamBooth的“妙鸭相机”——一次不太成功的实践

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

Encoder-Decoder:Seq2seq

目录 一、编码器解码器架构&#xff1a;1.定义&#xff1a;2.在CNN中的体现&#xff1a;3.在RNN中的体现&#xff1a;4.代码&#xff1a; 二、Seq2seq&#xff1a;1.模型架构&#xff1a;1.1编码器&#xff1a;1.2解码器&#xff1a; 2.架构细节&#xff1a;3.模型评估指标BLEU…

C# Unity 补全计划 泛型

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 1.什么是泛型 泛型&#xff08;Generics&#xff09;是C#中的一个强大特性&#xff0c;允许你编写可以适用于多种数据类型的可重用代码&#xff0c;而不需要重复编写…

第二证券:刚刚!亚太股市,跌麻了!

今天早盘&#xff0c;亚太股市全线崩跌。日经225指数在大幅低开之后快速下行&#xff0c;最大跌幅近5%&#xff1b;韩国、澳大利亚股指亦迎来逾越2%以上的暴降。那么&#xff0c;毕竟发生了什么&#xff1f; 剖析人士认为&#xff0c;或许仍是与日元套息有关。从前史来看&…

Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。Android studio纯java代码报错

我使用java代码 构建项目&#xff0c;初始代码运行就会报错。我使用的是Android Studio Giraffe&#xff08;Adroid-studio-2022.3.1.18-windows&#xff09;。我在网上找的解决办法是删除重复的类&#xff0c;但这操作起来真的太麻烦了。 这是全部报错代码&#xff1a; Dupli…

mysql环境的部署安装及数据库的操作(twenty day)

一、centos7 中安装 mysql 8.x 1、下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2、解压 tar -zxvf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3、卸载mariodb yum remove -y *mariadb* 4、依次安装依赖包…

SC215TA是C型/ PD和DPDM快速充电控制器,集成了内部反馈补偿PD3.0快充

SC215TA是C型/ PD和DPDM快速充电控制器&#xff0c;集成了内部反馈补偿。它符合最新的C型和PD 3.0标准&#xff0c;并支持专有的高压快速充电协议与DPDM接口。它的目标是旅行适配器的应用程序。SC215TA通过集成USB PD基带PHY、Type-C检测、DPDM PHY、VBUS放电路径、VCONN电源、…

旧衣回收小程序,旧衣回收行业新态势

进入网络时代后&#xff0c;互联网改变了大众的生活&#xff0c;传统的回收模式逐渐被淘汰&#xff0c;新兴的互联网旧衣回收受到了大众的关注&#xff01;通过技术创新为行业带来新模式&#xff0c;不断优化回收流程&#xff0c;提高回收效率&#xff0c;提升居民的回收体验&a…

Java编程达人:每日一练,提升自我

目录 题目1.以下哪个单词不是 Java 的关键字&#xff1f;2.boolean 类型的默认值为&#xff1f;3.以下代码输出正确的是&#xff1f;4.以下代码&#xff0c;输出结果为&#xff1a;5.以下代码输出结果为&#xff1a;6.以下代码输出结果为&#xff1f;7.float 变量的默认值为&am…

Three.js WebGPU 节点材质系统 控制instances的某个实例单独的透明度,颜色等属性

文章目录 1. 声明一个实例必要的属性instanceMatrix同级别的属性2. 在设置位置矩阵的时候填充这个数组3. 在shader中获取当前的索引4. 增加uniform5. 对比当前着色的实例是否是选中的实例6. 如果是选中的实例7. 影响片元着色器透明度参数 8.源码 写在前面 本文环境是 原生js 没…

EV代码签名证书申请流程

EV代码签名证书可以有效提高用户信赖。可以用于任何软件&#xff0c;支持Microsoft SmartScreen应用程序信誉功能以及对Windows 10内核驱动程序进行签名。 下面是EV代码签名证书的申请流程 代码签名证书_代码签名证书申请购买-JoySSL代码签名证书是对可执行脚本、软件代码和内容…

500+伙伴齐聚上海:纷享销客生态伙伴大会·上海站成功举办

近日&#xff0c;纷享销客生态伙伴大会上海站成功举办&#xff0c;此次会议汇聚了500余位来自各行各业的伙伴&#xff0c;齐聚一堂&#xff0c;共同探讨行业的未来发展趋势。 01、展望CRM市场 国内外双轮驱动&#xff0c;SaaS巅峰在价值创造与效率运营 纷享销客创始人兼CEO罗…

vulhub:nginx解析漏洞CVE-2013-4547

此漏洞为文件名逻辑漏洞&#xff0c;该漏洞在上传图片时&#xff0c;修改其16进制编码可使其绕过策略&#xff0c;导致解析为 php。当Nginx 得到一个用户请求时&#xff0c;首先对 url 进行解析&#xff0c;进行正则匹配&#xff0c;如果匹配到以.php后缀结尾的文件名&#xff…

零售门店客流统计系统支持回头客识别,更好维护老客户

随着市场竞争日益激烈&#xff0c;零售业面临着诸多挑战&#xff0c;尤其是如何吸引新客户的同时留住老客户。客流统计系统作为一项关键的技术手段&#xff0c;正在帮助零售门店解决这一难题。 一、零售门店客流统计痛点 1.数据准确性低&#xff1a;传统的人工统计方法往往存在…