elasticsearch 查询字段高亮

【硬刚ES】ES入门 (9) 语法(7)DQL(4)多字段排序/高亮查询/分页查询/聚合查询/桶聚合查询 本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。 13 多字段排序 假定我们想要结合使用 age 和 _score 进行查询,并且匹配的结果首先按照年龄排序,然后 按照相关性得分排序 在 Postman 中,向 ES 服务器发GET请求 :http://127.0.0.1:9200/student/_search 服务器响应结果: 14 高亮查询 在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。 ... 阅读详情
package com.zyyt.api.web;

import cn.hutool.core.collection.CollectionUtil;
import com.zyyt.commons.vo.es.SearchResponseVO;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.Operator;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by niudongdong on 2021/4/26.
 */
@Controller
public class EsHighlightController {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    @GetMapping("/test/es")
    public void aaa() throws IOException {
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("news_alias");
        searchRequest.types("news");
        searchRequest.searchType(SearchType.QUERY_THEN_FETCH);
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        String keyword = "Premier League set to kick off Island";
        keyword ="ha";
        //boolQueryBuilder.must(QueryBuilders.multiMatchQuery(keyword, "title", "text").type(MultiMatchQueryBuilder.Type.PHRASE));
        //boolQueryBuilder.must(QueryBuilders.queryStringQuery("(\"" + keyword + "\")").field("title").field("text").field("website_name").field("domain").defaultOperator(Operator.OR));
        boolQueryBuilder.must(QueryBuilders.queryStringQuery(keyword ).field("title").field("text").field("website_name").field("domain").defaultOperator(Operator.OR));

        //搜索源构建器
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(boolQueryBuilder);
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(10);
        int fragmentSize = 100;
        int numberOfFragments = 0;
        //高亮
        HighlightBuilder highlightBuilder = new HighlightBuilder().field("text", fragmentSize, numberOfFragments)
                .field("title", fragmentSize, numberOfFragments)
                .field("webstie_name", fragmentSize, numberOfFragments);

        highlightBuilder.preTags("<b style='color:blue;'>");
        highlightBuilder.postTags("</b>");
        searchSourceBuilder.highlighter(highlightBuilder);
        //将SearchSourceBuilder对象添加到搜索请求中
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits searchHits = searchResponse.getHits();
        SearchResponseVO<Map<String, Object>> searchResponseVO = new SearchResponseVO<>();
        searchResponseVO.setTotalCount(searchHits.getTotalHits());
        List<Map<String, Object>> list = new ArrayList<>();
        searchHits.iterator().forEachRemaining(hit -> {
            Map<String, HighlightField> highLightFieldMap = hit.getHighlightFields();
            if (highLightFieldMap != null && !highLightFieldMap.isEmpty()) {
                for (String lightField : highLightFieldMap.keySet()) {
                    Text[] texts = highLightFieldMap.get(lightField).getFragments();
                    if (texts != null && texts.length > 0) {
                        System.out.println(lightField +"-----"+ texts[0].toString());
                        System.out.println(hit.getSourceAsMap().get(lightField));
                        hit.getSourceAsMap().put(lightField, texts[0].toString());

                    }
                }
            }
            list.add(hit.getSourceAsMap());
        });
    }
}

 

centos7部署mysql8.0.35,主从复制,主主集群 centos7 linux部署mysql,主从复制,主主模式 阅读详情

相关推荐

Cadence SIP Layout 简单教程-第一章

以摄像头模组软硬结合板为例,描述layout的整个完整过程,从而掌握基本技能。 第一章 准备工作 第一节 原理图不用说layout前需要绘制原理图,原理图不在本文讨论范围内,所以列为准备工作。 需要特别说明的是,绘制原理的最终目的是导出网络表,网络表中的重要参数footprint是让layout软件选择正确封装的关键,所以这里讲解一下原理图设置footprint的位置。在原理图中双击零件,...

whp1920的博客 1万+

ELasticsearch实现多字段查询和多字段高亮

1.基本的查询方法 // 构建基本查询条件 private QueryBuilder buildBasicQueryWithFilter(SearchRequest request) { String flag = ""; BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder sho...

陌子曦的专栏 8316

使用QGIS提取天地图遥感影像中的建筑物轮廓,及AI方案

用QGIS的插件提取遥感影像中的建筑轮廓,并提供了几个AI提取建筑轮廓的方案。

cky_123的博客 2万+

如何通过Elasticsearch实现搜索的关键词达到高亮的效果

方法返回一个 Text 对象数组,每个 Text 对象表示高亮字段中的一个文本片段,最后将其中的文本片段拼接成一个字符串,最终存储到结果对象的相应属性中,最后实现高亮效果。方法返回一个包含文档中高亮字段的映射,然后从高亮字段映射中获取名为 “SUBJECT_NAME” 的高亮字段(也就是题目名字),从高亮字段中提取相关的文本片段,凸显了“高亮效果”。现在有一个场景:输入相关的面试题题目返回的结果中题目出现高亮效果,类似这样的效果。在设置好高亮的相关条件以后,就得从ES中查询相关的数据了并且处理相关的数据。

Superkom666的博客 1556

香橙派R1 Plus LTS变身无线AP/客户端:手把手教你用RTL8811CU和MT7601U网卡刷OpenWRT

本文详细介绍了如何将香橙派R1 Plus LTS开发板通过RTL8811CU和MT7601U两款USB无线网卡刷入OpenWRT系统,实现无线AP热点发射与客户端接入的双重功能。从硬件选型、驱动安装到双网卡协同配置,提供完整的实战指南,帮助用户快速搭建稳定高效的无线网络解决方案。

weixin_30919429的博客 408

icem二维非结构网格划分_ICEM CFD网格装配

正文共:718字7图 预计阅读时间:2分钟1 前言 对于一些大型的复杂的网格划分,可以将整个模型切分成多个子模型(二维几何用线切分,三维模型用面切分),然后对各个模型单独划分网格,最终装配在一起。这和机械设计的零件设计和装配设计有点相似,这个功...

weixin_39908758的博客 1623

用ES搜索关键字并且返回模糊字段高亮

一般来说,各个网站,首页的搜索,都会有进行全文搜索的示例,并且把模糊匹配的多个数据进行标记(高亮),这样便于全局检索关键的数据,便于客户进行浏览。基于此,本文简单介绍这种功能基本java 的 实现。类型ID: 1 线索、2 客户、3 商机、4 联系人、5 售前、6 订单、7 合同,下面是最终的想要的结果,搜索内容代码 1, type 是 类型。由于公司页面此功能隐藏了,本文就以接口调用返回看具体实现了。控制层 controller。// 构建查询条件 & 高亮。逻辑层 service。

qq_40415205的博客 3805

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 786

es--基础--6.1--springboot--集成elasticsearch

【代码】es--基础--6.1--springboot--集成elasticsearch。

zhou920786312的博客 2992

【YOLOv8/v9/v10 实战 01】YOLOv8/v9/v10全系列实战对决:性能矩阵、架构拆解与2026部署指南

2026年YOLO生态已进入“战国时代”,Ultralytics YOLOv8/11/26、阿里YOLO12、清华YOLOv10、微软YOLOv9四大路线并行发展。本文基于官方文档、学术论文及实测数据,系统剖析三大核心版本(YOLOv8/v9/v10)的架构演进逻辑,构建覆盖参数量、mAP、FPS、FLOPs的完整性能矩阵。通过8组工业场景实测、全流程代码实现(训练-导出-部署)、6类硬件适配方案,解决新手选型难、进阶者优化无门、工业开发者部署低效的痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 533

YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 7438

elasticsearch高亮属性设置问题 搜索条件有的字段才能设置高亮

也就是说要传参给dsl的这个参数才能设置高亮。 通过在kibana下可以直观的看到 在must下有的skuDesc字段可以设置高亮 must下没有的字段不能高设置高亮

weixin_44185736的博客 2936

十九、帧间预测编码_2、解码、显示顺序与图像管理、参考帧管理

一、基本概念 1.1H.264的解码顺序和显示顺序: 解码过程中,每一帧的数据按照相应的NAL Unit在码流中的顺序传入解码器进行解码 由于B帧的存在,视频帧在输出时会进行顺序重排 1.2frame_num与POC frame_num:表示解码顺序 POC:表示显示顺序(picture_order_count) 在H.264的码流中,表示解码顺序和显示顺序分别有相应的语法元素表示。这两个值都会在码流中保存,并在读取slice信息时解析(SliceHeader中) 1.3参考帧列表 某一帧图像在解

叮咚的博客 1328

ElasticSearch多个字段分词查询高亮显示

ElasticSearch关键字查询,将关键字分词后查询,多个字段,查询出来字段高亮显示。 查询方法如下:public List<NewsInfo> searcher2(String key, String indexId, String type) { List<NewsInfo> newsInfos= new ArrayList<NewsInfo>(); try

IT打工匠 2万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

知识点13--spring boot整合elasticsearch以及ES高亮

本章知识点沿用知识点11的项目,介绍如何使用spring boot整合ES,没有ES的去我主页中可以看到ES如何搭建不管你有没有ES,最好是没有,因为一定要知道一点,一定要去官网查一下你当前用的spring boot data es的版本是不是和你自己ES服务器所匹配的,这一点简直是天坑,spring boot提供的es封装API对es的版本要求相当苛刻,对不上就用不了,很多人折在版本问题,奉劝大家一句,除非正式的项目开发上,团队会给你提供需要版本的jar,正式开发本身版本都是经过架构师仔细考虑并且版本方面

别人笑我太疯癫,我笑他人看不穿。 3214

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

查询ES之细化需求实现多字段、范围过滤、加权和高亮

它用于在字段之间分配更多的“重要性”,但实际的得分还会受到文档内容、字段分析和查询类型等多种因素的影响。只需略微修改一下,就可以提高title字段的权重,根据生产实际,我们认为标题的重要性显然是高于正文内容的,因此权重相对提高5倍。类型会返回匹配最佳字段的文档,并考虑字段的权重。字段,其中包含了被高亮的文本片段。这个返回结果需要前端逻辑处理和渲染才能展示高亮的效果。字段的匹配将对最终得分产生更大的影响。上述查询中的高亮逻辑主要是其中的。字段的权重被设置为5,这意味着。值,因此它将使用默认权重1。

大数据,大模型,服务器,技术、架构,方案 1164

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ElasticSearch 教程入门到精通,高级查询全量查询,分页查询条件查询字段查询,组合查询范围查询,模糊查询高亮查询,最大值查询分组查询,笔记24、25、26、27、28

ElasticSearch 教程入门到精通,高级查询全量查询,分页查询条件查询字段查询,组合查询范围查询,模糊查询高亮查询,最大值查询分组查询,笔记24、25、26、27、28

道友 670

使用Java Api 查询ElasticSearch(ES) 索引 高亮查询

public class ESTest_Doc_Query { public static void main(String[] args) throws Exception { //创建ES客户端 RestHighLevelClient esClient = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost",9200,"http")) ...

lhp12355的博客 483

es7.6.2 head 常用查询 排序 返回指定字段 高亮查询 指定多个字段检索 时间区间查询 now函数 wildcard查询 正则查询 多条件bool查询

基本查询 排序 http://localhost:9200/suoyintest3/ PSOT _search { "query": { "match": { "content": "返回" } }, "sort": { "_score": "desc" } } 开启某个字段支持 fielddata 功能 http://localhost:9200/suoyintest3/_mapping/ put { "properties": ...

boss_way的博客 2121

3个技巧让你成为Elasticsearch查询高手:es-client深度使用指南

还在为复杂的Elasticsearch查询语法头疼吗?es-client作为一款现代化的Elasticsearch可视化客户端,基于Vue3和TypeScript开发,能够帮你轻松驾驭各种查询场景。本文将带你从工具选择到实战技巧,全方位掌握这个强大的查询利器! ## 为什么选择es-client?多平台部署方案详解 ### 桌面端:稳定优先的安装选择 对于日常使用频率较高的用户,桌面客户端版

gitblog_00883的博客 1195

Easy-Es高级功能揭秘:高亮搜索、地理距离与评分排序实战教程

Easy-Es是一款功能强大的 Elasticsearch ORM 框架,它简化了 Elasticsearch 的操作流程,让开发者能够更专注于业务逻辑的实现。本文将为您详细介绍 Easy-Es 中的高亮搜索、地理距离查询和评分排序这三大高级功能,帮助您更好地利用 Elasticsearch 的强大能力。 ## 一、高亮搜索:让搜索结果更醒目 在进行全文搜索时,高亮显示匹配的关键词可以让用户更

gitblog_00036的博客 505

Elasticsearch如何排序,分页以及高亮查询

本文主要介绍的是elasticsearch中的一些常用语法如分页,排序等

gaoqiandr的博客 1042

ES第五天-查询语法

ES查询超时机制 _search后面指定超时: GET /_search?timeout=1s ES中的查询 从es7开始就已经不建议使用type的概念,es8更是直接移除了type的概念,因此查询路径中我们之后都不带中间的type了。。 Query_String 查询全部 product索引,有数据: GET /product/_search { "took" : 0, "timed_out" : false, "_shards" : { "total" : 1, "su

darkness0604的博客 1718

elasticsearch高亮查询

elasticsearch高亮查询 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全...

sinat_40895117的博客 1567

Elasticsearch查询

Elasticsearch查询使用案例

外星喵的博客 5328

ElasticSearch Query查询(DSL方式) 高亮查询,布尔查询...

文章目录1.查询所有2.指定字段查询3.布尔查询并且指定字段4.多id查询(ids)5. 模糊查询(fuzzy)6.高亮(HighLight)查询7.多字段查询8.多字段分词查询 测试数据 ## 文档操作 PUT /ems { "mappings":{ "emp":{ "properties":{ "name":{ "type":"text" }, "age":{ "type":"integer"

weixin_46273997的博客 1088
上一篇: elasticsearch配置性能优化
下一篇: elasticsearch 添加或修改分词器
nddjava
博客等级 码龄16年 15粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值