elasticsearch-starter
使用说明
功能
- 引入 Spring Data Elasticsearch
- 支持 LocalDateTime <-> Long 时间戳参数转换
如何引入
com.hete.support
xx-elasticsearch-starter
如何配置
配置同原生配置
推荐配置如下
spring:
elasticsearch:
uris: #{ip:port}
username: #{username}
password: #{password}
使用注意事项
1 如何创建索引
● 手动编写脚本创建,不要在程序中设置自动创建。必须设置:createIndex = false
@Data
@Document(indexName = “index_demo”, createIndex = false)
public class EsPo {
}
● 创建索引一般脚本
http://账号:密码@ip:端口/索引名
{
“mappings”: {
“properties”: {
“brand”: {
“type”: “text”
},
“stringList”: {
“type”: “keyword”
},
“price”: {
“type”: “scaled_float”,
“scaling_factor”: 100
},
“diggCount”: {
“type”: “integer”
},
“createTime”: {
“type”: “date”
},
“lastUpdateTime”: {
“type”: “date”
}
}
}
}
关于keyword类型的查询
⚠️ 对于 keyword 类型,默认是大小写敏感的。部分场景需要在查询条件中忽略大小写查询,这个时候需要使用 “normalizer”: “lowercase”
参考:https://www.jianshu.com/p/bac93ca9a2a9
{
“mappings”: {
“properties”: {
“name”: {
“type”: “keyword”,
“normalizer”: “lowercase”
}
}
},
“settings”: {
“analysis”: {
“normalizer”: {
“lowercase”: {
“type”: “custom”,
“filter”: [
“lowercase”
]
}
}
}
}
}
2 写入数据
● es 的操作,封装在对应 es 的 dao 中
private final ElasticsearchOperations elasticsearchOperations;
elasticsearchOperations.save(esPo);
3 读数据
● es 的操作,封装在对应 es 的 dao 中
● 提供3种读数据的方法:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.operations.criteriaquery
○ CriteriaQuery(推荐:简单查询)
○ StringQuery
○ NativeQuery(推荐:复杂查询,例如分桶聚合等)
private final ElasticsearchOperations elasticsearchOperations;
Criteria criteria = new Criteria(LambdaUtil.getFieldName(EsPo::getStringList)).is(“李四”);
Query query = new CriteriaQuery(criteria);
SearchHits search = elasticsearchOperations.search(query, EsPo.class);
CommonPageResult.PageInfo esPoPageInfo = EsUtil.toPageInfo(pageDto, search);
NativeSearchQuery nativeSearchQuery2 = new NativeSearchQueryBuilder()
.withAggregations()
//查询条件
.withQuery(QueryBuilders.termQuery(LambdaUtil.getFieldName(EsPo::getStringList), “李四”))
.withPageable(EsUtil.toPageRequest(pageDto)).build();
SearchHits searchHits4 = elasticsearchOperations.search(nativeSearchQuery2, EsPo.class);
4 导出数据
● es 的操作,封装在对应 es 的 dao 中
● 数据导出,通过接入 SFDS 实现
● 业务系统需要提供2个接口
○ 查询数据总数
○ 根据查询条件查询数据
■ scroll_id 为空时,使用参数进行查询
■ scroll_id 不为空时,使用 scroll_id 进行 scroll 导出
● scroll_id 的有效期,建议为 5s ,不能超过1分钟
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
if (StringUtils.isBlank(scrollId)) {
NativeSearchQuery nativeSearchQuery2 = new NativeSearchQueryBuilder()
.withAggregations()
//查询条件
.withQuery(QueryBuilders.termQuery(LambdaUtil.getFieldName(EsPo::getStringList), “李四”))
.withPageable(PageRequest.of(0, 1))
.build();
SearchScrollHits search = elasticsearchRestTemplate.searchScrollStart(5000L, nativeSearchQuery2, EsPo.class, IndexCoordinates.of(“hello_world_test_2”));
ExportationListResultBo esPoPageInfo = EsUtil.toExportationResult(search);
reurn BizConverter.INSTANCE.toVoResult(esPoPageInfo);
}
SearchScrollHits scrollHints = elasticsearchRestTemplate.searchScrollContinue(scrollId, 5000L, EsPo.class, IndexCoordinates.of(“hello_world_test_2”));
ExportationListResultBo esPoPageInfo = EsUtil.toExportationResult(scrollHints);
// 如果查询出的数量不足,意味着查询可结束,手动清掉 scroll_id 的缓存,释放 es 空间
int resultSize = Optional.ofNullable(result).map(ExportationListResultBo::getRowDataList).orElse(Collections.emptyList()).size();
if (resultSize < pageSize) {
elasticsearchRestTemplate.searchScrollClear(Lists.newArrayList(scrollId));
}
reurn BizConverter.INSTANCE.toVoResult(esPoPageInfo);
版本更新
1.0.0
- 引入 spring data elasticsearch
- 支撑 LocalDateTime 类型
elasticsearch-starter相关推荐
- 本地部署SpringBootInitializr 【最新版】
本地部署SpringBootInitializr [最新版] 几十年没写东西了,今天记录一个折腾 SpringBootInitializr 这东西不用介绍了, 在这里,git在这里 如果用IDEA或者 ...
- SpringBoot_入门-HelloWorld细节-场景启动器(starter)
前面我们编写了一个springboot,通过这个helloworld我们发现,Springboot确实简单,他只需要写一个主程序,来启动Springboot的应用,接下来我们就按照我们的业务逻辑,编写 ...
- 您的日志就是您的数据:logstash + elasticsearch
今天的帖子的主题与日常的编码和开发无关,但是涵盖了一个非常重要的主题:我们的应用程序日志文件. 我们的应用程序确实会生成大量日志,如果处理正确,则非常有助于解决问题. 如果您启动并运行一个应用程序并没 ...
- Spring Boot的启动器Starter详解
Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...
- SpringBoot官方提供的starter pom
翻译Spring Boot官方提供的starter pom以供以后方便查询. 以下应用程序启动程序由Spring Boot在org.springframework.boot组下提供 : 表13.1.S ...
- Spring Boot2.1.5(8)--- 各Starter介绍
Spring-Boot-Starters 最通俗的理解- jar 包,引用了什么 starter,就获得了什么的依赖 Spring Boot application starters Name Des ...
- Spring Boot(3)---Spring Boot启动器Starter详解
Spring Boot的启动器Starter详解 Spring Boot 简化了 Spring 应用开发,不需要配置就能运行 Spring 应用, Spring Boot 管理 Spring 容器.第 ...
- Spring Boot + Spring Data + Elasticsearch实例
在本文中,我们将讨论"如何创建Spring Boot + Spring Data + Elasticsearch范例". 本文中使用的工具: Spring Boot 1.5.1.R ...
- elasticsearch RestHighLevelClient 使用方法及封装工具
目录 EsClientRHL 更新日志 开发原因: 使用前你应该具有哪些技能 工具功能范围介绍 工具源码结构介绍 开始使用 未来规划 git地址:https://gitee.com/zxporz/ES ...
- elastic-search学习笔记
es的起源 Elasticsearch是一个实时分布式搜索和分析引擎,它让你以前所未有的速度处理大数据.es常用于全文搜索.结构化搜索.分析以及将这三者混合使用,它是当下业界最流行的开源搜索框架.很多 ...
最新文章
- 国产最大AI开源框架再升级:一口气发布9大新产品,顺便送出亿元GPU算力
- Oracle 11g安装步骤详谈
- websphere、weblogic上JConsole的配置
- 轻量级的开源集成:Apache Camel还是Spring集成?
- 都是大人物,看看你认识几个。
- 解读程序员的武侠世界,顶级程序员是内外兼修的大侠,那么你呢?
- 计算机文档用什么翻译,Word文档翻译在哪里(适于Word2010-Word2016)?
- java 竖线分割字符串的问题
- 计算机网络class5(分层结构、协议、接口、服务)
- JavaScript数组api简单说明
- .Net读取Excel的数据类型不统一获取空值问题
- 「一本通 4.5 例 1」树的统计(树链剖分)
- opencv——Mat 矩阵数据类型转换convertTo
- WPS Mac旧版该怎么彻底卸载干净
- 获取当天零点/最晚时间戳
- Alist+RaiDrive将你的云盘本地化
- Windows10主机插入耳机只有一边有声音
- Quality-Estimation2 (翻译质量评价-在BERT模型后面加上Bi-LSTM进行fine-tuning)
- 解决uniapp静态文件字体包太大打包大小超出限制
- 13行Python代码实现一个神经网络(Part 2 - 梯度下降法)