关于用scala 写Elasticsearch +springboot+jpa
关于用scala 写Elasticsearch +springboot+jpa
最近在项目中用到这个 框架结构,用起来特别方便,分享下
引包 build.sbt
"org.springframework.boot" % "spring-boot-starter-data-elasticsearch" %verSpringBoot,
配置,我的是springcloud,配置文件配置在对应文件中就行了,
spring:data:elasticsearch:cluster-name: xxxxxcluster-nodes: xxx:9300
cluster-nodes: xxx:9300
repositories:enabled: true
@Document( indexName = "xxx", `type` = "xxxx" )
@Mapping( mappingPath = "jsons/userjson.json" )
@JsonIdentityInfo( generator = classOf[JSOGGenerator] )
class UserEntity() {@BeanPropertyvar id:Long=_@BeanPropertyvar uid:String=_
}
映射文件userjson.json
{"article": {"properties": {"id": {"type": "long"},"uid": {"type": "keyword","index":"false"}}}
}
注,因为springboot不是很兼容elasticsearch 框架,在elasticsearch库中,需要put
我配置的是kibana
PUT /xxx
{
"mappings": {"xxx": {"properties": {"id": {"type": "long"},"uid": {"type": "keyword"}
}
}
}
}
下面写jpa
@Repositorytrait UserDao extends CrudRepository[UserEntity,java.lang.Long] with ElasticsearchRepository[UserEntity,java.lang.Long]{
//写jpa的规则,就不介绍了,文章最后有个连接,可以借鉴下,这不本文的重点}
注,因为在有的地方elasticsearch 并不兼容于scala的类型所以在映射的时候尽量用java类型,在其他地方做个隐式转换就好了
隐式转换
import scala.collection.JavaConverters._
jpa关键字介绍下
关键字
使用示例
等同于的ES查询
关键字 | 示例 | es查询 |
---|---|---|
And | findByNameAndPrice | {“bool” : {“must” : [ {“field” : {“name” : “?”}}, {“field” : {“price” : “?”}} ]}} |
Or | findByNameOrPrice | {“bool” : {“should” : [ {“field” : {“name” : “?”}}, {“field” : {“price” : “?”}} ]}} |
Is | findByName | {“bool” : {“must” : {“field” : {“name” : “?”}}}} |
Not | findByNameNot | {“bool” : {“must_not” : {“field” : {“name” : “?”}}}} |
Between | findByPriceBetween | {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : ?,”include_lower” : true,”include_upper” : true}}}}} |
LessThanEqual | findByPriceLessThan | {“bool” : {“must” : {“range” : {“price” : {“from” : null,”to” : ?,”include_lower” : true,”include_upper” : true}}}}} |
GreaterThanEqual | findByPriceGreaterThan | {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : null,”include_lower” : true,”include_upper” : true}}}}} |
Before | findByPriceBefore | {“bool” : {“must” : {“range” : {“price” : {“from” : null,”to” : ?,”include_lower” : true,”include_upper” : true}}}}} |
After | findByPriceAfter | {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : null,”include_lower” : true,”include_upper” : true}}}}} |
Like | findByNameLike | {“bool” : {“must” : {“field” : {“name” : {“query” : “? *”,”analyze_wildcard” : true}}}}} |
StartingWith | findByNameStartingWith | {“bool” : {“must” : {“field” : {“name” : {“query” : “? *”,”analyze_wildcard” : true}}}}} |
EndingWith | findByNameEndingWith | {“bool” : {“must” : {“field” : {“name” : {“query” : “*?”,”analyze_wildcard” : true}}}}} |
Contains/Containing | findByNameContaining | {“bool” : {“must” : {“field” : {“name” : {“query” : “?”,”analyze_wildcard” : true}}}}} |
In | findByNameIn(Collectionnames) | {“bool” : {“must” : {“bool” : {“should” : [ {“field” : {“name” : “?”}}, {“field” : {“name” : “?”}} ]}}}} |
NotIn | findByNameNotIn(Collectionnames) | {“bool” : {“must_not” : {“bool” : {“should” : {“field” : {“name” : “?”}}}}}} |
True | findByAvailableTrue | {“bool” : {“must” : {“field” : {“available” : true}}}} |
False | findByAvailableFalse | {“bool” : {“must” : {“field” : {“available” : false}}}} |
OrderBy | findByAvailableTrueOrderByNameDesc | {“sort” : [{ “name” : {“order” : “desc”} }],”bool” : {“must” : {“field” : {“available” : true}}}} |
关于jpa的规则,有比较全的介绍博客,推荐下
https://blog.csdn.net/KingBoyWorld/article/details/78654820
初学者可以对比学习!
仅自勉,履霜坚冰至!
关于用scala 写Elasticsearch +springboot+jpa相关推荐
- springboot+jpa+mybatis 多数据源支持
springboot+jpa+mybatis 多数据源支持 配置dataSource import org.springframework.beans.factory.annotation.Quali ...
- springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离
相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...
- springboot+jpa+mysql Springboot+jpa+jdbc+sqlserver 使用时遇到的一系列的问题
更改背景 正在做一个微信小程序的前后端项目,一开始使用的是springboot+jpa+mysql,但负责接受数据存入数据库的负责人执意要用sqlserver.本来微信小程序前端,以及spring b ...
- 全网最全精析破解 Springboot+Jpa 对数据库增删改查
前言: 昨天做的是springboot+mybatis 对数据库进行增删改查 但是我感觉配置文件太多了 很麻烦 繁琐 今天搞一下springboot+Jpa对数据库进行增删改查, 感觉很好用 ,所以记 ...
- 基于 SpringBoot + jpa + Erupt 后台框架开发的综合签到打卡系统【100010425】
基于 SpringBoot + jpa + Erupt 后台框架开发的综合签到打卡系统 一 .项目背景及需求分析 用户在可靠验证下实现简化身份确认 在已有用户数据库基础上 传统校验方式: 直接选择 = ...
- 解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题)
解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题) 参考文章: (1)解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题) (2)https: ...
- java sql sum函数的使用方法,Springboot jpa使用sum()函数返回结果如何接收
1.需求 我的需求是统计域名以及域名出现的次数. 之前使用springboot jpa都是把数据库中的表跟实体类绑定,创建继承JpaRepository的接口.如下: @Repository publ ...
- springboot+jpa+mysql+redis+swagger整合步骤
springboot+jpa+MySQL+swagger框架搭建好之上再整合redis: 在电脑上先安装redis: 一.在pom.xml中引入redis 二.在application.yml里配置r ...
- 补习系列(19)-springboot JPA + PostGreSQL
目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...
最新文章
- 去中心化已成大势所趋,手机的中枢地位岌岌可危?
- python生成斐波那契_python学习-生成器(generator)及斐波那契;yield
- P6 根轨迹分析法-《Matlab/Simulink与控制系统仿真》程序指令总结
- Python初学者之ModuleNotFoundError:No module named 'cv2'简单解决办法
- python离散余弦变换_在python3下使用OpenCV做离散余弦变换DCT及其反变换IDCT
- PDH光端机常见故障及解决方法介绍
- 文件服务器上传文件的过程,文件服务器上传文件实现过程【分享】
- timeSetEvent、回调函数、CCriticalSection
- mysql索引条件下推_MySQL索引条件下推的简单测试
- 2011浙大878计算机专业基础扫描版真题
- CSS2 及CSS3 在ie浏览器下的支持情况
- 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定。
- python大数据培训好不好
- PicGo的安装与使用
- git将本地文件push到阿里云Code:出现Permission denied (publickey)错误
- Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula
- 蓝桥杯, 38线译码器74Hc138
- 你又知不知道,日有所思,夜有所梦。
- 数据库打开数据表_使用微数据打开您的数据
- 【亲测有效】Linux系统安装NVIDIA显卡驱动
热门文章
- Python光大证券中文云系统——爬取新浪财经新闻
- 批量对下载的pdf文献重命名
- 打开VT-x/VT-d功能
- C++实现Kingdomrush小游戏
- python用matplotlib画五角星_基于Matplotlib的Python绘图
- mysql squence分布式,xsequence分布式序列号生成组件1.0版本终于发布了
- SMBIOS读取本机的MEMORY信息
- 一文读懂什么是软件供应链安全
- 实战内容(1)- QQ浏览器屏幕分享报错:GET chrome-extension://invalid/ net::ERR_FAILED
- TMF SID性能相关实体介绍