How to provide highlighting with Spring data elasticsearch

How to provide highlighting with Spring data elasticsearch

@Test
public void shouldReturnHighlightedFieldsForGivenQueryAndFields() {

    //given
    String documentId = randomNumeric(5);
    String actualMessage = "some test message";
    String highlightedMessage = "some <em>test</em> message";

    SampleEntity sampleEntity = SampleEntity.builder().id(documentId)
            .message(actualMessage)
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = getIndexQuery(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class);

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(termQuery("message", "test"))
            .withHighlightFields(new HighlightBuilder.Field("message"))
            .build();

    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class, new SearchResultMapper() {
        @Override
        public <T> Page<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {
            List<SampleEntity> chunk = new ArrayList<SampleEntity>();
            for (SearchHit searchHit : response.getHits()) {
                if (response.getHits().getHits().length <= 0) {
                    return null;
                }
                SampleEntity user = new SampleEntity();
                user.setId(searchHit.getId());
                user.setMessage((String) searchHit.getSource().get("message"));
                user.setHighlightedMessage(searchHit.getHighlightFields().get("message").fragments()[0].toString());
                chunk.add(user);
            }
            if (chunk.size() > 0) {
                return new PageImpl<T>((List<T>) chunk);
            }
            return null;
        }
    });

    assertThat(sampleEntities.getContent().get(0).getHighlightedMessage(), is(highlightedMessage));
}

 

时间: 2024-09-20 22:22:12

How to provide highlighting with Spring data elasticsearch的相关文章

Spring Data Elasticsearch

项目清单   elasticsearch服务下载包括其中插件和分词   http://download.csdn.net/detail/u014201191/8809619   项目源码   资源文件   app.properties   [java] view plain copy    print? elasticsearch.esNodes=localhost:9300   elasticsearch.cluster.name=heroscluster   app.xml [java] v

使用Spring Data 仓库工作 4.1-4.3

Spring Data 仓库抽象的目标是为了明显减少为了各种持久存储的来实现的数据访问层的样板代码量. Spring Data存储库文档和你的模块 本章解释了Spring Data 存储库的核心观念,以及接口.本章的信息来自Spring Data公共模块.它使用了Java Persistence API(JPA)中的配置以及代码实例.将命名空间声明和要扩展的类型扩展为你将会使用的模块的等效项.命名空间引用包含了所有被Spring Data模块支持的存储库API的XML配置,存储库查询关键字包含了

elasticsearch-Spring Data Elasticsearch @Query 报错

问题描述 Spring Data Elasticsearch @Query 报错 按照spring官方文档显示的做,eclipse报Syntax error on tokens. public interface BookRepository extends ElasticsearchRepository<Book, String> { @Query("{"bool" : {"must" : {"field" : {&quo

Spring Boot + Elasticsearch

spring data elasticsearch elasticsearch 2.0.0.RELEASE 2.2.0 1.4.0.M1 1.7.3 1.3.0.RELEASE 1.5.2 1.2.0.RELEASE 1.4.4 1.1.0.RELEASE 1.3.2 1.0.0.RELEASE https://github.com/helloworldtang/spring-data-elasticsearch 1.None of the configured nodes are availa

Spring Data Commons 2.0.0.M4 发布

Spring Data Commons 2.0.0.M4 发布了.Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库.Map-Reduce 框架.云数据服务等等:另外也包含对关系数据库的访问支持. 更新内容: DATACMNS-1089 - Prepare upgrade to AssertJ 3.8. DATACMNS-1082 - Synthetic constructors should not be considered pers

8.3. Spring Data JPA

8.3.1. @Entity 8.3.1.1. @Id ID 字段 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false, insertable = true, updatable = false) private int id; 8.3.1.2. @Table 8.3.1.2.1. catalog @Table(name=

5.3. Spring Data JPA

5.3.1. @Entity 5.3.1.1. @Id ID 字段 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false, insertable = true, updatable = false) private int id; 5.3.1.2. @Table 5.3.1.2.1. catalog @Table(name=

Spring Data Redis 让 NoSQL 快如闪电(2)

[编者按]本文作者为 Xinyu Liu,文章的第一部分重点概述了 Redis 方方面面的特性.在第二部分,将介绍详细的用例.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论用例的简繁,Redis 都能帮助用户优化性能.处理能力和延迟,让常规 Java 企业版技术栈望而却步. 1. 全局唯一增量计数器 我们先从一个相对简单的用例开始吧:一个增量计数器,可显示某网

Spring Boot 2.x 小新功能 – Spring Data Web configuration

本文提纲 一.前言 二.运行 chapter-5-spring-boot-paging-sorting 工程 三.chapter-5-spring-boot-paging-sorting 工程配置详解 四.小结 运行环境: Mac OS 10.12.x JDK 8 + Spring Boot 2.0.0.M4  一.前言 Spring 2.x 更新了一个小小的功能即: Spring Data Web configuration Spring Boot exposes a new spring.d