- 浏览: 669971 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
1.准备工作
参考文档《集成Elasticsearch Restful API案例》导入和配置es客户端
2.创建索引表和初始化数据
通过组件DocumentCRUD来创建索引表和初始化数据,DocumentCRUD组件实现本文不做重点介绍:
3.高亮检索功能实现
3.1 定义高亮检索dsl
在文件esmapper/demo.xml中增加testHighlightSearch配置:
3.2 编写高亮检索代码
创建检索类-org.bboss.elasticsearchtest.HighlightSearch
在其中定义以下方法
4.运行检索功能
定义junit测试用例:
在idea或者eclipse中运行测试用例即可,输出检索到的高亮内容信息如下:
5.完整的demo实例工程
https://github.com/bbossgroups/eshelloword-booter
https://gitee.com/bbossgroups/eshelloword-booter
6.参考文档
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-request-highlighting.html
https://my.oschina.net/bboss/blog/1801273
5 开发交流
elasticsearch技术交流群:166471282
elasticsearch微信公众号:bbossgroups
参考文档《集成Elasticsearch Restful API案例》导入和配置es客户端
2.创建索引表和初始化数据
通过组件DocumentCRUD来创建索引表和初始化数据,DocumentCRUD组件实现本文不做重点介绍:
/** * 创建索引表,并导入高亮检索功能需要的测试数据 */ public void initIndiceAndData(){ DocumentCRUD documentCRUD = new DocumentCRUD(); documentCRUD.testCreateIndice(); documentCRUD.testBulkAddDocuments(); }
3.高亮检索功能实现
3.1 定义高亮检索dsl
在文件esmapper/demo.xml中增加testHighlightSearch配置:
<!-- 一个简单的检索dsl,中有四个变量 name 全文检索字段 startTime endTime 通过map传递变量参数值 变量语法参考文档:https://my.oschina.net/bboss/blog/1556866 --> <property name="testHighlightSearch"> <![CDATA[{ "query": { "bool": { "filter": [ { ## 时间范围检索,返回对应时间范围内的记录,接受long型的值 "range": { "agentStarttime": { "gte": #[startTime],##统计开始时间 "lt": #[endTime] ##统计截止时间 } } } ], "must": [ #* { "query_string": { "query": #[condition], "analyze_wildcard": true } } *# { ## 全文检索参考文档 https://www.elastic.co/guide/en/elasticsearch/reference/6.2/full-text-queries.html "match_phrase" : { "name" : { "query" : #[condition] } } } ] } }, ## 最多返回1000条记录 "size":1000, ## 高亮检索定义,参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-request-highlighting.html "highlight": { "pre_tags": [ "<mark>" ], "post_tags": [ "</mark>" ], "fields": { "*": {} }, "fragment_size": 2147483647 } }]]> </property>
3.2 编写高亮检索代码
创建检索类-org.bboss.elasticsearchtest.HighlightSearch
在其中定义以下方法
public void highlightSearch() throws ParseException { //创建加载配置文件的客户端工具,用来检索文档,单实例多线程安全 ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil(mappath); //设定查询条件,通过map传递变量参数值,key对于dsl中的变量名称 //dsl中有三个变量 // condition // startTime // endTime Map<String,Object> params = new HashMap<String,Object>(); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置时间范围,时间参数接受long值 params.put("startTime",dateFormat.parse("2017-09-02 00:00:00")); params.put("endTime",new Date()); params.put("condition","喜欢唱歌");//全文检索条件,匹配上的记录的字段值对应的匹配内容都会被高亮显示 //执行查询,demo为索引表,_search为检索操作action ESDatas<Demo> esDatas = //ESDatas包含当前检索的记录集合,最多1000条记录,由dsl中的size属性指定 clientUtil.searchList("demo/_search",//demo为索引表,_search为检索操作action "testHighlightSearch",//esmapper/demo.xml中定义的dsl语句 params,//变量参数 Demo.class);//返回的文档封装对象类型 //获取总记录数 long totalSize = esDatas.getTotalSize(); System.out.println(totalSize); //获取结果对象列表,最多返回1000条记录 List<Demo> demos = esDatas.getDatas(); for(int i = 0; demos != null && i < demos.size(); i ++){//遍历检索结果列表 Demo demo = demos.get(i); //记录中匹配上检索条件的所有字段的高亮内容 Map<String,List<Object>> highLights = demo.getHighlight(); Iterator<Map.Entry<String, List<Object>>> entries = highLights.entrySet().iterator(); while(entries.hasNext()){ Map.Entry<String, List<Object>> entry = entries.next(); String fieldName = entry.getKey(); System.out.print(fieldName+":"); List<Object> fieldHighLightSegments = entry.getValue(); for (Object highLightSegment:fieldHighLightSegments){ /** * 在dsl中通过<mark></mark>来标识需要高亮显示的内容,然后传到web ui前端的时候,通过为mark元素添加css样式来设置高亮的颜色背景样式 * 例如: * <style type="text/css"> * .mark,mark{background-color:#f39c12;padding:.2em} * </style> */ System.out.println(highLightSegment); } } } }
4.运行检索功能
定义junit测试用例:
import org.junit.Test; import java.text.ParseException; public class HighlightSearchTest { @Test public void testHighlightSearch() throws ParseException { HighlightSearch highlightSearch = new HighlightSearch(); highlightSearch.initIndiceAndData(); highlightSearch.highlightSearch(); } @Test public void testHighlightSearchOther() throws ParseException { HighlightSearch highlightSearch = new HighlightSearch(); highlightSearch.initIndiceAndData(); highlightSearch.highlightSearchOther(); } }
在idea或者eclipse中运行测试用例即可,输出检索到的高亮内容信息如下:
name:刘德华<mark>喜</mark><mark>欢</mark><mark>唱</mark><mark>歌</mark>454 name:刘德华<mark>喜</mark><mark>欢</mark><mark>唱</mark><mark>歌</mark>488 name:刘德华<mark>喜</mark><mark>欢</mark><mark>唱</mark><mark>歌</mark>508 name:刘德华<mark>喜</mark><mark>欢</mark><mark>唱</mark><mark>歌</mark>518
5.完整的demo实例工程
https://github.com/bbossgroups/eshelloword-booter
https://gitee.com/bbossgroups/eshelloword-booter
6.参考文档
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-request-highlighting.html
https://my.oschina.net/bboss/blog/1801273
5 开发交流
elasticsearch技术交流群:166471282
elasticsearch微信公众号:bbossgroups
发表评论
-
一组获取Elasticsearch 索引表所有文档API使用案例
2018-11-18 16:02 3012The best elasticsearch highle ... -
Elasticsearch Scroll和Slice Scroll查询API使用案例
2018-09-16 18:49 3835Elasticsearch Scroll和Slice Scro ... -
数据库数据导入Elasticsearch案例分享
2018-09-16 18:42 6259The best elasticsearch highleve ... -
Spring Boot整合ElasticSearch单/多集群案例
2018-07-07 20:12 9776Spring Boot整合ElasticSearch单个集群和 ... -
ElasticSearch DSL Script使用案例分享
2018-06-28 23:52 6178the best elasticsearch highleve ... -
Elasticsearch 6.3.0 SQL功能使用案例分享
2018-06-25 19:12 3276The best elasticsearch highleve ... -
数据库数据导入Elasticsearch案例分享
2018-06-21 22:56 433The best elasticsearch highleve ... -
ElasticSearch From-Size分页案例
2018-06-14 00:17 3383ElasticSearch From-Size分页案例 1. ... -
ElasticSearch客户端注解使用介绍
2018-05-30 00:19 2371The best elasticsearch highleve ... -
基于自定义配置文件初始化ElasticSearch客户端方法介绍
2018-05-24 18:56 1485基于自定义配置文件初始化ElasticSearch客户端方法介 ... -
判断ElasticSearch索引Indice和索引类型是否存在
2018-05-05 23:54 8498The best elasticsearch highleve ... -
快速集成Elasticsearch Restful API案例
2018-04-26 14:27 3168The best elasticsearch highleve ... -
Elasticsearch source filter检索案例
2018-04-24 13:00 2221摘要: the best elasticsearch high ... -
Elasticsearch search after分页检索案例
2018-04-21 10:36 3056Elasticsearch search after分页检索案 ... -
Elasticsearch Delete/UpdateByQuery案例
2018-04-16 11:09 7322Elasticsearch Delete/UpdateByQu ... -
Elasticsearch返回父子数据关联查询案例
2018-04-13 12:36 4673在《Elasticsearch 父子关 ... -
Elasticsearch Sliced Scroll分页检索案例分享
2018-04-02 18:28 3748Elasticsearch Sliced Scroll分页检索 ... -
Elasticsearch地理位置维护及检索案例分享
2018-03-31 21:36 1687Elasticsearch地理位置信息维护及检索案例分享 1 ... -
Elasticsearch Scroll分页检索案例分享
2018-03-28 20:40 4058Elasticsearch Scroll分页检索案例分享 1 ... -
Elasticsearch Mget、GetDocSource、索引部分更新案例分享
2018-03-25 08:55 12211.前期准备 参考文档《高性能elasticsearch OR ...
相关推荐
elasticsearch6.x版本,包括索引的增删改查,高亮检索,分词。
springboot整合elasticsearch7,进行数据同步。elasticsearch相关度查询、排序。高亮显示;自动补全等功能。代码仅供参考,代码中有具体的注释,可以根据代码及注释内容,对自己项目架构及业务进行修改、整合。
java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...
Elasticsearch in Action 全文检索Elasticsearch in Action 全文检索Elasticsearch in Action 全文检索Elasticsearch in Action 全文检索Elasticsearch in Action 全文检索Elasticsearch in Action 全文检索
将带有 and or not 的关键词解析成elasticsearch查询语句,如(中国 and (相刮 or (张三 and 李四 ) or not(xxx,yyy) )) and 翔安
十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统。 什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索...
ElasticSearch分享ppt40页+.pptx 适用于java学习者 作为技术分享也可
基于SpringBoot+MyBaties+Thymeleaf+... ElasticSearch 作为本站的站内搜索框架,支持分词检索数据和关键词高亮。 前台页面 采用模板之家中的一部分+博客模板, 后台模板 采用 AdminLte 的模板(基于BootStrap的)。
Elasticsearch全文检索,springboot整合ES,包括创建索引,根据id查询,关键字查询,删除索引等基本操作。
ElasticSearch_大数据检索介绍,单位的培训资料,分享给大家
Spring Boot结合Jest实现对ElasticSearch的全文检索,分词检索,分页,搜索结果高亮关键词,多字段检索 PageController中的搜索方法里面是全套的,分词,分页,高亮等都包含,数据格式个es-head中创建索引的索引在...
ElasticSearch和activiti案例ElasticSearch和activiti案例ElasticSearch和activiti案例ElasticSearch和activiti案例
使用ElasticSearch实现全文检索是一种常见且高效的方式。下面是详细的技术实践和说明: 安装和配置ElasticSearch: 首先,需要在服务器上安装ElasticSearch,并确保其正常运行。 然后,进行相关配置,如集群名称、...
使用spring boot+Elasticsearch 7.9.1+kibana 实现对word,pdf,txt等文件的非结构化数据全文内容检索
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索...
基于ElasticSearch的海量文本检索系统 基于ElasticSearch的海量文本检索系统,目前支持txt, doc, docx, pdf, ppt格式文本上传及全文查询,本项目作为本人的毕业设计
Springboot + ElasticSearch 构建博客检索系统 简易博客检索系统使用前后端分离,前端使用 Vue ,后端使用 SpringBoot 数据库 MySQL 检索使用 ElasticSearch 同步数据使用 logstash
好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...
Elasticsearch官方提供数据案例account.json
elasticsearch5.5.2用javaAPI实现搜索结果高亮显示和搜索建议源代码下载