使用说明
功能

  1. 引入 Spring Data Elasticsearch
  2. 支持 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

  1. 引入 spring data elasticsearch
  2. 支撑 LocalDateTime 类型

elasticsearch-starter相关推荐

  1. 本地部署SpringBootInitializr 【最新版】

    本地部署SpringBootInitializr [最新版] 几十年没写东西了,今天记录一个折腾 SpringBootInitializr 这东西不用介绍了, 在这里,git在这里 如果用IDEA或者 ...

  2. SpringBoot_入门-HelloWorld细节-场景启动器(starter)

    前面我们编写了一个springboot,通过这个helloworld我们发现,Springboot确实简单,他只需要写一个主程序,来启动Springboot的应用,接下来我们就按照我们的业务逻辑,编写 ...

  3. 您的日志就是您的数据:logstash + elasticsearch

    今天的帖子的主题与日常的编码和开发无关,但是涵盖了一个非常重要的主题:我们的应用程序日志文件. 我们的应用程序确实会生成大量日志,如果处理正确,则非常有助于解决问题. 如果您启动并运行一个应用程序并没 ...

  4. Spring Boot的启动器Starter详解

    Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...

  5. SpringBoot官方提供的starter pom

    翻译Spring Boot官方提供的starter pom以供以后方便查询. 以下应用程序启动程序由Spring Boot在org.springframework.boot组下提供 : 表13.1.S ...

  6. Spring Boot2.1.5(8)--- 各Starter介绍

    Spring-Boot-Starters 最通俗的理解- jar 包,引用了什么 starter,就获得了什么的依赖 Spring Boot application starters Name Des ...

  7. Spring Boot(3)---Spring Boot启动器Starter详解

    Spring Boot的启动器Starter详解 Spring Boot 简化了 Spring 应用开发,不需要配置就能运行 Spring 应用, Spring Boot 管理 Spring 容器.第 ...

  8. Spring Boot + Spring Data + Elasticsearch实例

    在本文中,我们将讨论"如何创建Spring Boot + Spring Data + Elasticsearch范例". 本文中使用的工具: Spring Boot 1.5.1.R ...

  9. elasticsearch RestHighLevelClient 使用方法及封装工具

    目录 EsClientRHL 更新日志 开发原因: 使用前你应该具有哪些技能 工具功能范围介绍 工具源码结构介绍 开始使用 未来规划 git地址:https://gitee.com/zxporz/ES ...

  10. elastic-search学习笔记

    es的起源 Elasticsearch是一个实时分布式搜索和分析引擎,它让你以前所未有的速度处理大数据.es常用于全文搜索.结构化搜索.分析以及将这三者混合使用,它是当下业界最流行的开源搜索框架.很多 ...

最新文章

  1. 国产最大AI开源框架再升级:一口气发布9大新产品,顺便送出亿元GPU算力
  2. Oracle 11g安装步骤详谈
  3. websphere、weblogic上JConsole的配置
  4. 轻量级的开源集成:Apache Camel还是Spring集成?
  5. 都是大人物,看看你认识几个。
  6. 解读程序员的武侠世界,顶级程序员是内外兼修的大侠,那么你呢?
  7. 计算机文档用什么翻译,Word文档翻译在哪里(适于Word2010-Word2016)?
  8. java 竖线分割字符串的问题
  9. 计算机网络class5(分层结构、协议、接口、服务)
  10. JavaScript数组api简单说明
  11. .Net读取Excel的数据类型不统一获取空值问题
  12. 「一本通 4.5 例 1」树的统计(树链剖分)
  13. opencv——Mat 矩阵数据类型转换convertTo
  14. WPS Mac旧版该怎么彻底卸载干净
  15. 获取当天零点/最晚时间戳
  16. Alist+RaiDrive将你的云盘本地化
  17. Windows10主机插入耳机只有一边有声音
  18. Quality-Estimation2 (翻译质量评价-在BERT模型后面加上Bi-LSTM进行fine-tuning)
  19. 解决uniapp静态文件字体包太大打包大小超出限制
  20. 13行Python代码实现一个神经网络(Part 2 - 梯度下降法)

热门文章

  1. 并行:四种C+OpenMP计算π的并行程序
  2. leetcode-跳跃游戏
  3. Qt中qrc文件编译后缺少预编译头文件
  4. strcmp函数的分析及实现
  5. mysql数据库有关教程
  6. Kotlin 特色之 Sealed Class 和 Interface
  7. NBD(Network Block Device)简介及基本使用
  8. 常用的行列式和矩阵的性质
  9. RabbitMQ 设置消息的TTL(过期时间)
  10. telnet协议的Wireshark抓包分析