SpringBoot + Elasticsearch5.x

@Component
@Configuration
public class ElasticsearchConfiguration {
    private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConfiguration.class);
    @Value("${es.cluster.nodes}")
    private String clusterNodes ;
    @Value("${es.cluster.name}")
    private String clusterName;
    private TransportClient client;

    @Bean
    public TransportClient init(){
        logger.info("Building ElasticSearch client");
        Settings settings = Settings.builder().put("cluster.name", clusterName).build();
        client = new PreBuiltTransportClient(settings);
        try {
            if (!"".equals(clusterNodes)){
                for (String nodes:clusterNodes.split(",")) {
                    String InetSocket[] = nodes.split(":");
                    String address = InetSocket[0];
                    Integer port = Integer.valueOf(InetSocket[1]);
                    client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(address), port));
                }
            }
        } catch (Exception e) {
            logger.error("Error build ElasticSearch client: {}", e.getMessage());
        }
        return client;
    }

    @PreDestroy
    public void destory() {
        if (client != null){
            client.close();
        }
    }
}


项目源码:点击打开链接

在使用`NativeSearchQueryBuilder`查询时,可以通过设置`HighlightBuilder`来实现高亮显示。具体步骤如下: 1. 创建`HighlightBuilder`对象,并设置高亮显示的字段和高亮前缀、后缀: ``` HighlightBuilder highlightBuilder = new HighlightBuilder() .field("title") // 需要高亮显示的字段名 .preTags("<em>") // 高亮前缀 .postTags("</em>"); // 高亮后缀 ``` 2. 将`HighlightBuilder`对象设置到`NativeSearchQueryBuilder`中: ``` NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder() .withHighlightBuilder(highlightBuilder) // 设置高亮显示 .withQuery(QueryBuilders.matchQuery("title", "关键字")); ``` 3. 执行查询并获取结果,处理高亮显示: ``` SearchHits<YourEntity> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), YourEntity.class); List<SearchHit<YourEntity>> hits = searchHits.getSearchHits(); List<YourEntity> entities = new ArrayList<>(); for (SearchHit<YourEntity> hit : hits) { YourEntity entity = hit.getContent(); // 处理高亮显示 Map<String, List<String>> highlightFields = hit.getHighlightFields(); List<String> highlightTitle = highlightFields.get("title"); if (highlightTitle != null && !highlightTitle.isEmpty()) { entity.setTitle(highlightTitle.get(0)); // 将高亮显示的内容设置到实体对象中 } entities.add(entity); } ``` 在上述代码中,`searchHits.getSearchHits()`获取到的是`SearchHit<YourEntity>`类型的列表,其中包含了查询结果和高亮显示信息。可以通过`hit.getContent()`获取到实体对象,通过`hit.getHighlightFields()`获取到高亮显示的字段和内容。最后,将高亮显示的内容设置到实体对象中即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值