- 浏览: 698080 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 3181The best elasticsearch highle ... -
Elasticsearch Scroll和Slice Scroll查询API使用案例
2018-09-16 18:49 4008Elasticsearch Scroll和Slice Scro ... -
数据库数据导入Elasticsearch案例分享
2018-09-16 18:42 6420The best elasticsearch highleve ... -
Spring Boot整合ElasticSearch单/多集群案例
2018-07-07 20:12 9985Spring Boot整合ElasticSearch单个集群和 ... -
ElasticSearch DSL Script使用案例分享
2018-06-28 23:52 6362the best elasticsearch highleve ... -
Elasticsearch 6.3.0 SQL功能使用案例分享
2018-06-25 19:12 3416The best elasticsearch highleve ... -
数据库数据导入Elasticsearch案例分享
2018-06-21 22:56 433The best elasticsearch highleve ... -
ElasticSearch From-Size分页案例
2018-06-14 00:17 3517ElasticSearch From-Size分页案例 1. ... -
ElasticSearch客户端注解使用介绍
2018-05-30 00:19 2555The best elasticsearch highleve ... -
基于自定义配置文件初始化ElasticSearch客户端方法介绍
2018-05-24 18:56 1581基于自定义配置文件初始化ElasticSearch客户端方法介 ... -
判断ElasticSearch索引Indice和索引类型是否存在
2018-05-05 23:54 8623The best elasticsearch highleve ... -
快速集成Elasticsearch Restful API案例
2018-04-26 14:27 3254The best elasticsearch highleve ... -
Elasticsearch source filter检索案例
2018-04-24 13:00 2349摘要: the best elasticsearch high ... -
Elasticsearch search after分页检索案例
2018-04-21 10:36 3202Elasticsearch search after分页检索案 ... -
Elasticsearch Delete/UpdateByQuery案例
2018-04-16 11:09 7506Elasticsearch Delete/UpdateByQu ... -
Elasticsearch返回父子数据关联查询案例
2018-04-13 12:36 4818在《Elasticsearch 父子关 ... -
Elasticsearch Sliced Scroll分页检索案例分享
2018-04-02 18:28 3843Elasticsearch Sliced Scroll分页检索 ... -
Elasticsearch地理位置维护及检索案例分享
2018-03-31 21:36 1745Elasticsearch地理位置信息维护及检索案例分享 1 ... -
Elasticsearch Scroll分页检索案例分享
2018-03-28 20:40 4145Elasticsearch Scroll分页检索案例分享 1 ... -
Elasticsearch Mget、GetDocSource、索引部分更新案例分享
2018-03-25 08:55 12891.前期准备 参考文档《高性能elasticsearch OR ...
相关推荐
这些应用案例都展示了Elasticsearch在全文搜索、结构化搜索和数据分析方面的强大能力。 Elasticsearch的实时特性意味着它能够在数据被索引后,几乎即时地提供搜索结果。这使得Elasticsearch非常适合于需要快速响应...
在这个案例中,我们将探讨如何利用Elasticsearch开发一个简易的搜索引擎,实现数据导入、建立索引以及按关键词进行搜索的功能。 首先,我们要了解Elasticsearch的基本概念。索引(Index)是Elasticsearch中的核心...
此资源因需自备梯子比较难下载,现分享出来... 它被用作全文检索、结构化搜索、分析以及这三个功能的组合: Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索。 这个文件是书籍里面提到的测试用例,提供给大家
本示例"**Elasticsearch 集成spring-boot 搜索demo**"旨在展示如何在Spring Boot应用程序中无缝集成Elasticsearch,以实现高效的数据搜索功能。Elasticsearch是一个分布式、开源的全文搜索引擎,它提供了一个简单而...
实践过程涉及了将Elasticsearch应用于中文分词的具体步骤和经验分享。 描述中提到的“避免小白使用过程中遇到的弯路和套路”,意味着文章将提供一些使用Elasticsearch进行中文分词时容易遇到的问题和解决方案。 ...
《Java Elasticsearch实战》这本书主要探讨了如何利用Java API与Elasticsearch进行深度集成,从而实现高效的数据检索和分析。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,广泛应用于日志分析、...
ElasticSearch应用场景维基百科,类似百度百科,全文检索,高亮,搜索推荐The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+社交网络数据(对某某新闻的相关看法),数据分析,...
- **电商搜索优化**:分享在电商网站中如何利用Elasticsearch优化商品搜索体验的最佳实践。 - **实时监控应用**:探讨如何构建基于Elasticsearch的实时监控系统,实现对业务数据的实时跟踪与报警。 通过以上这些...
1. **Solr 和 Elasticsearch**: 为了简化部署和管理,Apache 社区开发了基于 Lucene 的两个企业级搜索引擎:Solr 和 Elasticsearch。它们提供了分布式搜索、集群管理和更丰富的功能。 2. **性能优化**: 通过设置...
本项目"es-demo"是一个关于Elasticsearch的实践案例,旨在展示如何利用Elasticsearch进行数据存储、检索和分析。Elasticsearch是一款开源的全文搜索引擎,以其分布式、实时性、高可扩展性和强大的数据分析能力而广受...
在实际应用中,结合Lucene与其他技术,如Solr或Elasticsearch等,可以进一步提升搜索性能和易用性。无论是在企业级应用还是个人项目中,Lucene都是一个不可或缺的工具,值得每一个Java开发者深入研究。
"ES技术资料"可能包含Elasticsearch的安装教程、配置示例、最佳实践、性能优化指南、API参考文档、实战案例分析等内容。通过这些资料,学习者可以深入了解Elasticsearch的使用方法和高级特性,提升在实际项目中的...
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,广泛应用于日志分析、实时监控、全文检索等领域。在本项目中,开发者将Elasticsearch与Spring数据模块相结合,构建了一个名为"MyEsDemo"的示例应用,...
除了基本功能,本书还涵盖了高级主题,如多字段检索、近实时搜索、分布式搜索以及Lucene与其他技术的集成,如Solr和Elasticsearch。这些内容有助于构建大规模、高性能的搜索引擎应用。 对于那些对性能优化感兴趣的...
7. **分布式搜索**:随着数据量的增大,单机搜索可能无法满足需求,因此需要了解如何使用Solr或Elasticsearch这样的基于Lucene的分布式搜索引擎进行集群部署和跨节点搜索。 8. **性能优化**:探讨如何优化Lucene的...
Elasticsearch则进一步扩展了Solr的功能,具备更强大的分布式、实时、容错能力,适用于大数据量的搜索引擎搭建。 《Lucene_in_Action.rar》可能是《Lucene in Action》这本书的电子版,这本书详细介绍了Lucene的...
5. **分布式搜索**: 通过Solr或Elasticsearch等工具,可以实现Lucene.Net的分布式搜索,支持大规模数据和高并发。 **四、实战案例** 在实际项目中,Lucene.Net常用于企业级的内部文档检索、电子商务的商品搜索、...
通过集成Elasticsearch,项目可以提供强大的模糊匹配和高亮显示等高级搜索特性。 总的来说,这个基于SpringBoot的多媒体素材库项目展示了Java Web开发的常见技术和最佳实践,包括SpringBoot的使用、数据库设计、...
Lucene可以与其他开源项目结合使用,如Solr和Elasticsearch,它们在Lucene的基础上提供了更高级的服务,如分布式搜索、集群管理和API封装,更适合大型企业级应用。 **文件内容推测** 由于提供的压缩包文件名称没有...
7. **分布式搜索**:随着数据量的增大,单机索引可能无法满足需求,因此需要了解如何利用Solr或Elasticsearch等基于Lucene的分布式搜索解决方案。 8. **性能优化**:这部分可能涵盖索引和查询性能的优化策略,如...