ElasticSearch教程——Java进行高亮显示
ElasticSearch汇总请查看:ElasticSearch教程——汇总篇
更多Java操作请移步ElasticSearch教程——Java常用操作
基础环境
注意pom中的jar包版本,最好是和服务器上的elasticsearch版本一致,目前就测试来看,不一致貌似也没啥大的影响
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.elasticsearch</groupId><artifactId>elasticSearch</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>elasticSearch</name><description>Demo project for elasticsearch</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><elsaticsearch.version>6.4.0</elsaticsearch.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${elsaticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>${elsaticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>${elsaticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elsaticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elsaticsearch.version}</version><type>pom</type></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
HighLight.java
package com.gwd.elasticsearch.test;import java.net.InetAddress;
import java.net.UnknownHostException;import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;/*** Description:* 作者:gu.weidong(Jack)* date:2018年9月18日* ProjectName:elasticSearch*/
public class HighLight {public static void main(String[] args) throws UnknownHostException {// TODO Auto-generated method stub// 设置集群名称Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();// 创建clientTransportClient client = new PreBuiltTransportClient(settings). addTransportAddress(new TransportAddress(InetAddress.getByName("XXX.XXX.XX.XX"), 9300));//本地的话,可以使用 localhost,9300是默认的 api 访问接口QueryBuilder matchQuery = QueryBuilders.matchQuery("title", "Elasticsearch");HighlightBuilder hiBuilder=new HighlightBuilder();hiBuilder.preTags("<h2>");hiBuilder.postTags("</h2>");hiBuilder.field("title");// 搜索数据SearchResponse response = client.prepareSearch("blog").setQuery(matchQuery).highlighter(hiBuilder).execute().actionGet();//获取查询结果集SearchHits searchHits = response.getHits();System.out.println("共搜到:"+searchHits.getTotalHits()+"条结果!");//遍历结果for(SearchHit hit:searchHits){System.out.println("String方式打印文档搜索内容:");System.out.println(hit.getSourceAsString());System.out.println("Map方式打印高亮内容");System.out.println(hit.getHighlightFields());System.out.println("遍历高亮集合,打印高亮片段:");Text[] text = hit.getHighlightFields().get("title").getFragments();for (Text str : text) {System.out.println(str.string());}}}
}
注意
在pom.xml配置文件中务必加入
dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>6.4.0</version>
</dependency>
否则会报如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/InetSocketTransportAddressat org.elasticsearch.transport.Netty4Plugin.getSettings(Netty4Plugin.java:55)at org.elasticsearch.plugins.PluginsService.lambda$getPluginSettings$0(PluginsService.java:87)at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267)at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380)at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)at org.elasticsearch.plugins.PluginsService.getPluginSettings(PluginsService.java:87)at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:145)at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:283)at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:128)at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:114)at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:104)at com.gwd.elasticsearch.test.HighLight.main(HighLight.java:31)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.transport.InetSocketTransportAddressat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 16 more
查询结果
共搜到:2条结果!
String方式打印文档搜索内容:{"title": "New version of Elasticsearch released!","content": "Version 1.0 released today!","priority": 10,"tags": ["announce", "elasticsearch", "release"]
}
Map方式打印高亮内容
{title=[title], fragments[[New version of <h2>Elasticsearch</h2> released!]]}
遍历高亮集合,打印高亮片段:
New version of <h2>Elasticsearch</h2> released!
String方式打印文档搜索内容:{"id": "1","title": "New version of Elasticsearch released!","content": "Version 1.0 released today!","priority": 10,"tags": ["announce", "elasticsearch", "release"]
}
Map方式打印高亮内容
{title=[title], fragments[[New version of <h2>Elasticsearch</h2> released!]]}
遍历高亮集合,打印高亮片段:
New version of <h2>Elasticsearch</h2> released!
ElasticSearch教程——Java进行高亮显示相关推荐
- ElasticSearch教程——汇总篇
环境搭建篇 ElasticSearch教程--安装 ElasticSearch教程--安装Head插件 ElasticSearch教程--安装IK分词器插件 ElasticSearch教程--安装Ki ...
- (转)ElasticSearch教程——汇总篇
https://blog.csdn.net/gwd1154978352/article/details/82781731 环境搭建篇 ElasticSearch教程--安装 ElasticSearch ...
- 适用于Java开发人员的Elasticsearch教程
课程大纲 Elasticsearch是基于Lucene的搜索引擎. 它提供了具有HTTP Web界面和无模式JSON文档的分布式多租户全文搜索引擎. Elasticsearch是用Java开发的,并根 ...
- 适用于Java开发人员的Elasticsearch:Java的Elasticsearch
本文是我们学院课程的一部分,该课程的标题为Java开发人员的Elasticsearch教程 . 在本课程中,我们提供了一系列教程,以便您可以开发自己的基于Elasticsearch的应用程序. 我们涵 ...
- docker rabbitmq_使用Docker集成Rabbitmq与安装elasticsearch教程
今天为大家分享,使用Docker-集成Rabbitmq,使用Docker-安装elasticsearch,Docker容器的备份与迁移教学! 使用Docker-集成Rabbitmq 使用Docker- ...
- elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂
作者:阿里云MVP 铭毅 往期内容: 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! Elasticsearch学习,请先看这一篇!(Elasticsearch教程01 ...
- 十分nb且详细的Elasticsearch教程
实时搜索引擎Elasticsearch Elasticsearch(简称ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能 ...
- ElasticSearch教程——proximity match 近似匹配
ElasticSearch汇总请查看:ElasticSearch教程--汇总篇 1.什么是近似匹配 两个句子 java is my favourite programming language, an ...
- 关于Elastic、关于Elasticsearch教程
不写教程就会感到寂寞. 国庆期间,著名的数据搜索公司Elastic在纽交所上市,股票发行价为36美元,Elastic上市首日最高股价为74.2美元,最高涨幅达到106%.于是网上有人感叹,这么多年,终 ...
最新文章
- mybatis-spring从1.1升级到1.2所带来的dao层级的编写问题
- 基于python的界面自动化测试-基于Python语言的自动化测试系统的设计与实现
- kafka配置_Kafka生产环境的几个重要配置参数
- .NET 和 JAVA
- 银行it现状调研_中央银行系统行业现状调研分析及发展趋势预测报告(2019年版)...
- 分布式系统:CAP 理论的前世今生
- 7-4 银行业务队列简单模拟 (15 分)
- java行转列_Java后端面试标准:如何准备一场后端面试?
- 数据流图技术相关基础知识
- SVM入门(一)至(三)
- python写的 自定义连点器 的开发全过程(抢票、信息轰炸等、游戏连招等)——思路及解析【内附完整源码】
- ffmpeg和JavaCV
- Chevereto网站存放图像至相应二级分类文件夹
- Excel 相对引用 绝对引用 区别是什么 如何快速转换 快捷键 F4
- 鸿雪因缘--穿越千年的朋友圈
- Form认证timeout无效问题
- 通过Keycloak API理解OAuth2与OpenID Connect
- 2022前端开发React面试题 附答案
- 最新多功能校园表白墙源码 LoveWall V2.0Pro
- 链克的链克袋鼠钱包插件的安装和使用
热门文章
- 不建议使用免费进销存软件的几个原因
- 小学计算机课教学工作总结,小学信息技术课教师工作总结3篇
- 让windows xp、2003的桌面图标透明
- 含电热联合系统的微电网运行优化(Matlab代码实现)
- 视频录制后怎么裁剪?这里有可以学习的操作
- 用python模拟双色球中奖,看看怎么买彩票最科学
- win10安装程序没有修复计算机,安装Win10系统突然没有声音怎么修复
- php 仿微信发红包 负数,php仿微信红包分配算法的实现方法
- 51单片机-红外计算器
- java操作Excel-poi:无法解析符号/方法Cannot resolve symbol ‘‘、Cannot resolve method ‘‘