@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面试真题解析相关推荐

  1. 吃一堑长一智!2021最新Java面试真题解析

    字节跳动一面 自我介绍,我简历里面有一个商城的项目 画一个商城项目的所有的模块,然后讲解. 在用户登录的时候,由于HTTP是无状态的如何识别不同的用户(session或者cookie) ,然后让说一下 ...

  2. 2021最新Java面试真题解析!java写九九乘法表代码

    01 分布式限流:Nginx+ZooKeeper 1.1 分布式限流之Nginx 请解释一下什么是 Nginx? 请列举 x Nginx 的一些特性. 请列举 x Nginx 和 和 Apache 之 ...

  3. 京东最新Java面试真题解析!mysql两个时间比较

    为了更好的梳理相关知识,咱们先看纯手绘知识体系图 1.1 Kafka知识体系大纲 由于我手绘这些知识体系大纲是用的xmind软件,无法上传,所以都以截图的形式展示,细节处不清楚(毕竟图片形式有限) 1 ...

  4. 2021京东最新Java面试真题解析,java下载安装教程手机

    前言 今年我也33了,离传说中不好找工作的35岁又更近了.说没有焦虑是对自己撒谎,于是我采访了一些人,自己思考了下,写下了这篇文章,希望能有些共鸣. 先看看大家的态度: 色老力衰,不好忽悠,不能带头加 ...

  5. 2021大厂Java面试真题(一)

    2021大厂Java面试真题(一) 大厂面试的基本流程 以下是一些大厂面试的基本流程,大家可以参考下: 字节跳动 阿里 腾讯 网易游戏 面试前需要准备: \1. **Java 八股文:**了解常考的题 ...

  6. 2021大厂Java面试真题(二)

    2021大厂Java面试真题(二) 2021 [阿里]面试真题: 1.TCP 和 UDP 区别? TCP 基于连接,UDP 基于无连接. TCP 要求系统资源较多,UDP 较少. UDP 程序结构较简 ...

  7. 2021大厂Java面试真题(六)

    2021大厂Java面试真题(六) * * 2021 [华为]面试真题* * : * * 1.Java 常用集合及特点?* * List:ArrayList.LinkedList.Vector.Sta ...

  8. Java基础2019最新Java面试经典题解析

    Java基础2019最新Java面试经典题解析 1简述JVM.JRE.JDK的区别 JVM:java虚拟机 ,加载.class并运行.class JRE:java运行环境除了包含JVM以外还包含了运行 ...

  9. 把最新JAVA面试真题(阿里/京东/菜鸟)整理出来,却被自己菜哭了

    前言 2020终于迎来了最后的两个月,这一年,全世界都不安定,被疫情包围,渐渐治愈和免疫,国内虽然看着和往常没有多大的区别,但对于经济的冲击,不知道又倒退了多少年?大大小小的公司面临倒闭或已破产,对于 ...

最新文章

  1. OpenCV中直方图反向投影算法详解与实现
  2. 原生 AJAX的相关介绍
  3. 计算机硬盘清理,电脑磁盘清理,详细教您电脑磁盘怎么清理
  4. 高并发,分布式系统要点
  5. 理解tcp关闭连接中的time_wait状态
  6. vim 块操作、多文件操作、多窗口操作命令
  7. table 设置边框
  8. “约见”面试官系列之常见面试题第三十六篇之CSS常见兼容性问题及解决方案(建议收藏)
  9. OOA OOD OOP
  10. 20.Java集合框架(四)
  11. Tomcat安装后没有出现tomcat主页
  12. ie下解决PNG图片不透明问题
  13. SingleSignOn的配置和说明
  14. html未点击背景 点击背景,vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)...
  15. 百度螺旋桨PaddleHelix论道“AI+生物计算”,加速推进多维价值释放
  16. 网络安全-江湖高手专用的“隐身术”:图片隐写技术
  17. 一剑开尘走龙蛇 XGBoost
  18. Linux 性能优化全景指南
  19. 关于流程图设计,你需要Get的几点必备知识
  20. 你真的了解java编译优化吗?15个问题考察自己是否理解

热门文章

  1. 基于树莓派的微型气象台
  2. AndroidStudio_自定义AndroidStudio Locat的输出颜色
  3. 关于LANDesk我们知道些什么
  4. 计算机专业名词(缩写、全称、中文全称)
  5. win7 修复计算机步骤,解答win7系统桌面上的计算机不见了的修复步骤
  6. 清朝皇帝年表及1840年后清朝历史事件
  7. 开发类 - DeepIn 安装 IDEA 并集成 Tomcat
  8. 前缀学习完结篇 第三课上
  9. 人民币为什么 不继续升值
  10. doolittle分解法解线性方程