1、maven引用 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.2.0</version> </dependency> 2、ElasticsearchConfig.java @Configuration public class ElasticsearchConfig { @Bean public RestHighLevelClient restHighLevelClient() { RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.01", 9200, "http"))); return restHighLevelClient; } } 3、ContentService.java @Service("contentService") public class ContentService { @Autowired private RestHighLevelClient restHighLevelClient; public boolean parseContent(String keywords) throws Exception { List<Goods> contents = HtmlParserUtils.parseJD(keywords); BulkRequest bulkRequest = new BulkRequest(); bulkRequest.timeout("2m"); for (int i = 0; i < contents.size(); i++) { bulkRequest.add(new IndexRequest("jd_goods").source(JSON.toJSONString(contents.get(i)), XContentType.JSON)); } BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT); return bulk.hasFailures(); } public List<Map<String, Object>> searchPage(String keywords, int pageNo, int pageSize) throws Exception { if (pageNo <=1) { pageNo = 1; } SearchRequest searchRequest = new SearchRequest("jd_goods"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 分页 sourceBuilder.from(pageNo); sourceBuilder.size(pageSize); // 精准匹配 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", keywords); sourceBuilder.query(termQueryBuilder); sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); // 执行搜索 searchRequest.source(sourceBuilder); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); // 解析结果 List<Map<String, Object>> list = new ArrayList<>(); for(SearchHit documentFields : searchResponse.getHits().getHits()) { list.add(documentFields.getSourceAsMap()); } return list; } /** * 搜索高亮 * @param keywords * @param pageNo * @param pageSize * @return * @throws Exception */ public List<Map<String, Object>> searchPageHighlight(String keywords, int pageNo, int pageSize) throws Exception { if (pageNo <=1) { pageNo = 1; } SearchRequest searchRequest = new SearchRequest("jd_goods"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 分页 sourceBuilder.from(pageNo); sourceBuilder.size(pageSize); // 精准匹配 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", keywords); sourceBuilder.query(termQueryBuilder); sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.field("title"); // 多个高亮显示 highlightBuilder.requireFieldMatch(false); highlightBuilder.preTags("<span style='color:red'>"); highlightBuilder.postTags("</span>"); sourceBuilder.highlighter(highlightBuilder); // 执行搜索 searchRequest.source(sourceBuilder); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); // 解析结果 List<Map<String, Object>> list = new ArrayList<>(); for(SearchHit hit : searchResponse.getHits().getHits()) { // 解析高亮的字段 Map<String, HighlightField> highlightFields = hit.getHighlightFields(); HighlightField title = highlightFields.get("title"); Map<String, Object> sourceMap = hit.getSourceAsMap(); if (title != null) { Text[] fragments = title.fragments(); String n_title = ""; for (Text text : fragments) { n_title = n_title + text; } // 高亮字段替换原来的内容即可 sourceMap.put("title", n_title); } list.add(sourceMap); } return list; } }
相关推荐
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存...es基本是开箱即用(解压就可以用!),非常简单。Solr安装略微复杂一点!
分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (Elastic...Elasticsearch基本使用和简单查询 Elasticsearch的Java客户端使用 Elasticsearch索引和Mapping Elasticsearch搜索深入 Elastic
Elasticsearch的基本概念包括Node、Cluster、Index和Document。Node是Elasticsearch中的单个实例,可以单独运行,也可以在集群中作为数据节点或协调节点。Cluster是由多个Node组成的,每个Cluster都有一个唯一的集群...
Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...
在安装Elasticsearch之前,我们需要了解一些基本概念和步骤: 1. **Java运行环境**:Elasticsearch是用Java编写的,因此,安装前必须确保系统上已安装了JDK,并且版本至少为8。可以通过`java -version`命令检查Java...
以上就是 Elasticsearch Python 客户端的基本使用方法,包括创建 Index、插入、查询和删除数据,以及一些高级查询操作。实际使用中,你还可以根据需求探索更多的搜索、过滤和聚合功能。记住,错误处理是关键,可以...
5. **浏览器扩展**:虽然Elasticsearch-Head可以作为一个独立的服务运行,但题目提到的是在谷歌浏览器中作为扩展使用。这需要将解压后的文件上传至Chrome浏览器的扩展管理页面,然后启用该扩展。 ### 功能特性 1. ...
一般来说我们开发Elasticsearch会选择使用集成springboot,在网上找的springboot集成elasticsearch文章几乎都是extends ElasticsearchRepository的方式来实现。但是新版本ElasticsearchRepository里的方法基本上已经...
Elasticsearch 7.14.0 是一个高度可扩展的全文搜索引擎,广泛应用于日志分析、实时数据分析...以上内容涵盖了Elasticsearch 7.14.0的基本使用和扩展功能,但具体操作和配置细节需参考官方文档,结合实际需求进行调整。
而Elasticsearch-head插件由于更新较慢,可能无法支持最新版本的Elasticsearch,因此在实际使用中需要考虑兼容性问题。 总的来说,Elasticsearch-head插件是一个轻量级且实用的Elasticsearch可视化工具,尤其适合...
Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助...
在.NET Core开发中,Elasticsearch已经成为一种广泛使用的全文搜索引擎,它提供了高度可扩展性和实时分析功能。这个名为"基于.netcore搜索封装ElasticSearch.zip"的压缩包,显然包含了一个针对.NET Core平台的...
标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...
首先,我们需要在一个 Elasticsearch 节点上生成证书,使用 `elasticsearch-certutil ca` 创建 CA 证书,然后使用 `elasticsearch-certutil cert` 生成服务器证书。确保证书具有适当的权限,并将其复制到集群中的...
在数据抽取 ELT 领域,ES 全家桶 ELK(Elasticsearch+Logstash+Kibana)赫赫有名。 Elasticsearch 基本概念: * 倒排索引:Elasticsearch 为什么快,核心设计理念就是采用了倒排索引机制。倒排索引的方式是,根据 ...
在众多的ElasticSearch客户端工具中,"ElasticHD-1.4"可能是一款专为Elasticsearch设计的可视化界面工具,其版本号为1.4,暗示着它可能具备一些基本的功能,如集群健康检查、节点信息查看、索引管理等。虽然具体的...
Java实现Elasticsearch的简单实例主要涉及以下几个关键...以上就是基于Java实现Elasticsearch的基本步骤和涉及的主要知识点。在实际开发中,还需要考虑性能优化、安全性、集群管理等多个方面,以构建高效稳定的ES应用。
在IT领域,尤其是在搜索引擎优化和大数据分析中,Elasticsearch(ES)是一个广泛使用的开源全文检索引擎。它基于Lucene库,提供了分布式、实时、高可用性以及容错能力的数据存储和搜索解决方案。本篇文章将重点讲解...
以上就是Elasticsearch 7.17.11版本安装及使用IK分词器的基本步骤。为了优化性能和满足特定需求,你还可以通过配置词典、同义词库等方式进一步定制分词规则。记住,合理的分词策略对于提高搜索准确性和用户体验具有...