SpringBoot整合Elasticsearch,2021最新Java面试真题解析
@Field(type = FieldType.Keyword)
private String categroy;
@Field(type = FieldType.Double)
private Double price;
}
使用ElasticsearchTemplate创建索引,添加映射
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SearchServiceApplication.class)
public class ElasticsearchTest {
@Autowired
private ElasticsearchTemplate template;
@Test
public void createIndex(){
//删除索引
template.deleteIndex(Goods.class);
//创建索引
template.createIndex(Goods.class);
//添加映射,将字段映射到类型上
template.putMapping(Goods.class);
}
}
检查结果
操作索引
==================================================================
使用ElasticsearchRepository接口完成索引操作
/**
- goods索引操作接口
*/
public interface GoodsRepository extends ElasticsearchRepository<Goods,Long> {
}
测试添加数据
@Autowired
private GoodsRepository goodsRepository;
@Test
public void testSave(){
Goods goods = new Goods(1L, “华为P30手机”, “Huawei”, “手机”, 4444.0);
//单条保存,id存在就更新,不存在就添加
goodsRepository.save(goods);
List list = Arrays.asList(
new Goods(2L, “华为P40手机”, “Huawei”, “手机”, 6666.0),
new Goods(3L, “小米11手机”, “MI”, “手机”, 6666.0),
new Goods(4L, “小米12手机”, “MI”, “手机”, 1666.0),
new Goods(5L, “小米13手机”, “MI”, “手机”, 2666.0),
new Goods(6L, “OPPOX1手机”, “oppo”, “手机”, 3666.0),
new Goods(7L, “OPPOX2手机”, “oppo”, “手机”, 4666.0),
new Goods(8L, “OPPOX3手机”, “oppo”, “手机”, 2666.0),
new Goods(9L, “VIVOv1手机”, “vivo”, “手机”, 3666.0),
new Goods(10L, “VIVOv2手机”, “vivo”, “手机”, 5666.0)
);
//多条保存
goodsRepository.saveAll(list);
}
查询数据
==================================================================
ElasticsearchRepository提供了非常强大的查询生成功能,按约定的方式在接口中定义查询方法,它来实现查询。
如:
/**
- goods索引操作接口
*/
public interface GoodsRepository extends ElasticsearchRepository<Goods,Long> {
//通过名称模糊查询
List findByNameLike(String name);
//查询两个价格之间的商品
List findByPriceBetween(Double p1,Double p2);
}
可以使用的关键字:
| 关键字 | 示例 |
| — | — |
| And | findByNameAndPrice |
| Or | findByNameOrPrice |
| Is | findByName |
| Not | findByNameNot |
| Between | findByPriceBetween |
| LessThan | findByPriceLessThan |
| LessThanEqual | findByPriceLessThanEqual |
| GreaterThan | findByPriceGreaterThan |
| GreaterThanEqual | findByPriceGreaterThan |
| Before | findByPriceBefore |
| After | findByPriceAfter |
| Like | findByNameLike |
| StartingWith | findByNameStartingWith |
| EndingWith | findByNameEndingWith |
| Contains/Containing | findByNameContaining |
| In (when annotated as FieldType.Keyword) | findByNameIn(Collectionnames) |
| In | findByNameIn(Collectionnames) |
| NotIn (when annotated as FieldType.Keyword) | findByNameNotIn(Collectionnames) |
| NotIn | findByNameNotIn(Collectionnames) |
| Near | findByStoreNear |
| True | findByAvailableTrue |
| False | findByAvailableFalse |
| OrderBy | findByAvailableTrueOrderByNameDesc |
测试
@Test
public void testFind(){
List list = goodsRepository.findByNameLike(“华为”);
list.forEach(System.out::println);
List list2 = goodsRepository.findByPriceBetween(3000.0, 5000.0);
list2.forEach(System.out::println);
}
测试其它查询方式
@Test
public void testSearch(){
//基本的搜索
MatchQueryBuilder builder = QueryBuilders.matchQuery(“brand”, “华为”);
//查询结果
Iterable goods = goodsRepository.search(builder);
goods.forEach(System.out::println);
//原生查询生成器
NativeSearchQueryBuilder builder1 = new NativeSearchQueryBuilder();
//生成原生查询
builder1
//.withQuery(QueryBuilders.termQuery(“categroy”,“手机”)) //精确查询
.withQuery(QueryBuilders.fuzzyQuery(“brand”,“oppe”)) //模糊查询,可以查到oppo
.withPageable(PageRequest.of(0,3)) //设置分页
.withSort(SortBuilders.fieldSort(“price”).orde
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
r(SortOrder.DESC)); //配置排序
//查询结果
SpringBoot整合Elasticsearch,2021最新Java面试真题解析相关推荐
- 吃一堑长一智!2021最新Java面试真题解析
字节跳动一面 自我介绍,我简历里面有一个商城的项目 画一个商城项目的所有的模块,然后讲解. 在用户登录的时候,由于HTTP是无状态的如何识别不同的用户(session或者cookie) ,然后让说一下 ...
- 2021最新Java面试真题解析!java写九九乘法表代码
01 分布式限流:Nginx+ZooKeeper 1.1 分布式限流之Nginx 请解释一下什么是 Nginx? 请列举 x Nginx 的一些特性. 请列举 x Nginx 和 和 Apache 之 ...
- 京东最新Java面试真题解析!mysql两个时间比较
为了更好的梳理相关知识,咱们先看纯手绘知识体系图 1.1 Kafka知识体系大纲 由于我手绘这些知识体系大纲是用的xmind软件,无法上传,所以都以截图的形式展示,细节处不清楚(毕竟图片形式有限) 1 ...
- 2021京东最新Java面试真题解析,java下载安装教程手机
前言 今年我也33了,离传说中不好找工作的35岁又更近了.说没有焦虑是对自己撒谎,于是我采访了一些人,自己思考了下,写下了这篇文章,希望能有些共鸣. 先看看大家的态度: 色老力衰,不好忽悠,不能带头加 ...
- 2021大厂Java面试真题(一)
2021大厂Java面试真题(一) 大厂面试的基本流程 以下是一些大厂面试的基本流程,大家可以参考下: 字节跳动 阿里 腾讯 网易游戏 面试前需要准备: \1. **Java 八股文:**了解常考的题 ...
- 2021大厂Java面试真题(二)
2021大厂Java面试真题(二) 2021 [阿里]面试真题: 1.TCP 和 UDP 区别? TCP 基于连接,UDP 基于无连接. TCP 要求系统资源较多,UDP 较少. UDP 程序结构较简 ...
- 2021大厂Java面试真题(六)
2021大厂Java面试真题(六) * * 2021 [华为]面试真题* * : * * 1.Java 常用集合及特点?* * List:ArrayList.LinkedList.Vector.Sta ...
- Java基础2019最新Java面试经典题解析
Java基础2019最新Java面试经典题解析 1简述JVM.JRE.JDK的区别 JVM:java虚拟机 ,加载.class并运行.class JRE:java运行环境除了包含JVM以外还包含了运行 ...
- 把最新JAVA面试真题(阿里/京东/菜鸟)整理出来,却被自己菜哭了
前言 2020终于迎来了最后的两个月,这一年,全世界都不安定,被疫情包围,渐渐治愈和免疫,国内虽然看着和往常没有多大的区别,但对于经济的冲击,不知道又倒退了多少年?大大小小的公司面临倒闭或已破产,对于 ...
最新文章
- OpenCV中直方图反向投影算法详解与实现
- 原生 AJAX的相关介绍
- 计算机硬盘清理,电脑磁盘清理,详细教您电脑磁盘怎么清理
- 高并发,分布式系统要点
- 理解tcp关闭连接中的time_wait状态
- vim 块操作、多文件操作、多窗口操作命令
- table 设置边框
- “约见”面试官系列之常见面试题第三十六篇之CSS常见兼容性问题及解决方案(建议收藏)
- OOA OOD OOP
- 20.Java集合框架(四)
- Tomcat安装后没有出现tomcat主页
- ie下解决PNG图片不透明问题
- SingleSignOn的配置和说明
- html未点击背景 点击背景,vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)...
- 百度螺旋桨PaddleHelix论道“AI+生物计算”,加速推进多维价值释放
- 网络安全-江湖高手专用的“隐身术”:图片隐写技术
- 一剑开尘走龙蛇 XGBoost
- Linux 性能优化全景指南
- 关于流程图设计,你需要Get的几点必备知识
- 你真的了解java编译优化吗?15个问题考察自己是否理解