一、相关包maven配置

  <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-elasticsearch -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>1.3.6.RELEASE</version>
</dependency>

spring-boot  1.3.8.RELEASE能支持配置注解故,elasticsearch的配置可以在 xxx.properties文件中配置

# ELASTICSEARCH (ElasticsearchProperties)
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=192.9.8.222:9300
spring.data.elasticsearch.repositories.enabled=true

这样可以通过框架自动注入实例化类

    @Autowired
private ElasticsearchTemplate elasticsearchTemplate;

二、处理ES返回数据

获取搜索内容:

     // 空条件查询默认匹配全部
NativeSearchQueryBuilder nsbIndex = new NativeSearchQueryBuilder();
MatchAllQueryBuilder qbIndex = QueryBuilders.matchAllQuery(); // 设置分页参数
Pageable pageable = new PageRequest(page, limit);
nsbIndex.withPageable(pageable);
nsbIndex.withQuery(qbIndex);
SearchQuery searchQuery = nsbIndex.build();
Page<IndexSearch> pageIndexes = null;
try {
pageIndexes = elasticsearchTemplate.queryForPage(searchQuery, IndexSearch.class, new ElasticsearchResultMapper(heightFields));
} catch (Exception e) {
throw new YMLibWebApplicationException("搜索条件为空,查询全部文献出错,出错原因:" + e.getMessage(), e);
}
List<IndexSearch> indexes = pageIndexes.getContent();
.......

处理个性化设置类,如高亮显示属性:

上图红色部分类是一个个性化设置类,继承重写了SearchResultMapper 的mapResults方法

 public class ElasticsearchResultMapper implements SearchResultMapper {
private static Logger log = LoggerFactory.getLogger(ElasticsearchResultMapper.class); private final List<String> heightFields = new ArrayList<String>(); public ElasticsearchResultMapper(){ } public ElasticsearchResultMapper(List<String> heightFields){
this.heightFields.addAll(heightFields);
} @Override
public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {
// TODO Auto-generated method stub
// 将返回的结果标记指定的属性高亮显示
List<Object> chunk = setHighlightFieldsForSearchHits(response, heightFields);
// 该搜索条件总共命中多少条数据
long totalHits = response.getHits().totalHits();
// System.out.println("totalHits = "+totalHits);
return new FacetedPageImpl((List<T>) chunk, pageable, totalHits);
} /**
*
* @remark:[]
* @author:hoojjack
* @Description:TODO(对返回的结果设置高亮属性)
*/
public List<Object> setHighlightFieldsForSearchHits(@NotNull SearchResponse response,
@NotNull final List<String> heightFields) {
if (0 == heightFields.size()) {
System.out.println("heightFields不能为空");
return null;
}
List<Object> chunk = new ArrayList<Object>();
for (SearchHit searchHit : response.getHits()) {
// 打印出_score
// System.out.println("searchHitScore = " + searchHit.getScore() + "searchHitSource=" + searchHit.getSource());
if (response.getHits().getHits().length <= 0) {
log.info("未命中搜索结果");
return null;
}
Map<String, Object> entityMap = searchHit.getSource();
if (null == entityMap) {
log.error("搜索返回的结果中无_source属性值");
entityMap = new HashMap<String, Object>();
}
for (String highName : heightFields) {
//枚举类型属性不能标亮显示,标亮显示会多久一些标识,导致找不到相对应的枚举类型
if("literClassfication".equals(highName)){
continue;
}
if (null != searchHit.getHighlightFields().get(highName)) {
Text text[] = searchHit.getHighlightFields().get(highName).fragments();
if (text.length > 0) {
String highValue = searchHit.getHighlightFields().get(highName).fragments()[0].toString();
entityMap.put(highName, highValue);
}
}
}
chunk.add(entityMap);
}
return chunk;
} }

以上只是学习的一部分记录,随着学习的深入,再继续更新!

基于Spring-Boot框架的Elasticsearch搜索服务器配置的更多相关文章

  1. 基于Spring Boot框架开发的一个Mock

    背景:在项目后端接口开发还未完成,我们无法进行自动化接口用例的调试,希望与开发同步完成接口自动化用例的编写及调试,待项目转测后,可以直接跑自动化用例,提高测试效率. 选用的maven + Spring ...

  2. 手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303)

    前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素 ...

  3. 基于Spring Boot的问答系统之一:elasticsearch 7.2的hello world入门

    好久没有写代码了,最近想做一个基于spring boot + vue + elasticsearch + NLP(语义相关性)的小系统练练手,系统后面可以成为一个聊天机器人,客服系统的原型等等. 所以 ...

  4. Spring Boot 框架下使用MyBatis访问数据库之基于XML配置的方式

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  5. 基于Spring Boot、Spring Cloud、Docker的微服务系统架构实践

    由于最近公司业务需要,需要搭建基于Spring Cloud的微服务系统.遍访各大搜索引擎,发现国内资料少之又少,也难怪,国内Dubbo正统治着天下.但是,一个技术总有它的瓶颈,Dubbo也有它捉襟见肘 ...

  6. 基于Spring Boot/Spring Session/Redis的分布式Session共享解决方案

    分布式Web网站一般都会碰到集群session共享问题,之前也做过一些Spring3的项目,当时解决这个问题做过两种方案,一是利用nginx,session交给nginx控制,但是这个需要额外工作较多 ...

  7. step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework

    文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...

  8. 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合

    在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...

  9. 在Spring Boot框架下使用WebSocket实现消息推送

    Spring Boot的学习持续进行中.前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的 ...

随机推荐

  1. 详解CorelDRAW中如何合并与拆分对象

    合并两个或多个对象可以创建带有共同填充和轮廓属性的单个对象,以便将这些对象转换为单个曲线对象.可以合并的对象包括矩形.椭圆形.多边形.星形.螺纹.图形或文本等,本教程将详解CorelDRAW中关于合并 ...

  2. Python爬虫-豆瓣电影 Top 250

    爬取的网页地址为:https://movie.douban.com/top250 打开网页后,可观察到:TOP250的电影被分成了10个页面来展示,每个页面有25个电影. 那么要爬取所有电影的信息,就 ...

  3. linux中date命令显示昨天的日期信息?以特定格式显示时间?

    需求描述: linux环境中,在使用date命令的时候,可以通过-d指定日期的字符串来显示日期 操作过程: 1.通过date显示昨天的日期 [root@redhat6 ~]# date -d 'yes ...

  4. 关于float样式

    在认识float样式之前务必要认识position:absolute position:absolute 功能是:当前节点脱离文档流,对于其兄弟节点(即同一父节点下的节点)已经感觉不到他的存在(即他的 ...

  5. python对日志处理的封装

    一个适应性范围较广的日志处理 # coding=utf8 """ @author bfzs """ import os import log ...

  6. 8 -- 深入使用Spring -- 0...

    要点梗概: 利用后处理器扩展Spring容器 Bean后处理器和容器后处理器 Spring3.0 的“零配置” 支持 Spring的资源访问策略 在ApplicationContext中使用资源 AO ...

  7. Git Step by Step – (2) 本地Repo

    前面一篇文章简单介绍了Git,并前在Windows平台上搭建了Git环境,现在就正式的Git使用了. Git基本概念 在开始Git的使用之前,需要先介绍一些概念,通过这些概念对Git有些基本的认识,这 ...

  8. ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码

    ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码 >>>>>>>>>>>&g ...

  9. c# linq update单个字段

    1.更新单个字段 /// <summary> /// 更新字段 /// </summary> /// <typeparam name="T">& ...

  10. sqlserver添加查询 表、字段注释(转)

    环境:xp sp3,sql server2008 .sqlserver用语句给表注释 EXECUTE sp_addextendedproperty N'MS_Description', N'表注释', ...