一、相关包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. SDK Manager.exe和AVD Manager.exe缺失,Android SDK Tools在检查java环境时卡住了,未响应卡死!

    之前安装Android Studio的时候根据提示安装了Android SDK,但是发现目录下没有SDK Manager.exe和AVD Manager.exe,导致SDK的一些操作很不方便! 不知道 ...

  2. Go语言图形界面开发:Go版GTK

    https://www.cnblogs.com/tennysonsky/p/8433888.html package main import ( "os" "github ...

  3. jar包的启动和停止脚本

    启动: #!/bin/sh PIDFILE="/app/eureka/eureka.pid" LOGFILE="/app/eureka/out.log" if ...

  4. [原]unity3d ios平台内存优化(一)

    关于内存优化,人云亦云 各有己见.本文将通过设置Strpping Level ,减少内存使用. 先看三幅图: 1.没做任何优化,默认选项 2.设置Stripping level 为 Use micro ...

  5. Eclipse------使用Maven install出错:编码GBK的不可映射字符

    使用Maven install时报错:编码GBK的不可映射字符 原因:Maven默认使用GBK进行编码 解决方法: 在pom.xml文件中添加如下代码即可 <project> <pr ...

  6. sql 替换字符串

    MSSQL替换语句: )),'abc.com','123.com') 例如: update PE_Article set Content=replace(cast(Content as varchar ...

  7. 【RF库Built-In测试】Catenate

    Name:CatenateSource:BuiltIn <test library>Arguments:[ *items ]Catenates the given items togeth ...

  8. javascript 资料

    jQuery 语法实例 $(this).hide() 演示 jQuery hide() 函数,隐藏当前的 HTML 元素. $("#test").hide() 演示 jQuery ...

  9. C语言char*字符串数组和unsigned char[]数组的相互转换

    #include <iostream> #include <string> using namespace std; void convertUnCharToStr(char* ...

  10. 【.netcore学习】.netcore添加到 supervisor 守护进程自启动报错

    配置 supervisor [program:HelloWebApp] command=dotnet run directory=/home/python/dotnet/myweb/mywebapi ...