ElasticSearch之高亮显示_莫言静好、的博客-CSDN博客_elasticsearch 高亮


本站和网页 https://blog.csdn.net/zhanglh046/article/details/78536118 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

ElasticSearch之高亮显示_莫言静好、的博客-CSDN博客_elasticsearch 高亮
ElasticSearch之高亮显示
莫言静好、
于 2017-11-15 09:12:33 发布
21785
收藏
12
分类专栏:
搜索/elasticsearch
大数据/elasticsearch
文章标签:
ElasticSearch
高亮
highlight
Fast Vector Highligh
Posting Highlighter
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhanglh046/article/details/78536118
版权
搜索/elasticsearch
同时被 2 个专栏收录
16 篇文章
1 订阅
订阅专栏
大数据/elasticsearch
16 篇文章
1 订阅
订阅专栏
一 什么是highlight
Highlight就是我们所谓的高亮,即允许对一个或者对个字段在搜索结果中高亮显示。比如字体加粗或者字体呈现和其他文本普通颜色等。
为了执行高亮显示,该字段必须有实际的内容,并且这个字段必须存储,即在mapping中store设为true,不能只存在于内存中,否则系统会自动加载_source字段并匹配相关的列。
二 三种高亮类型
ES提供了三种高亮类型,Lucene的plain highlighter,以及fast vector highlighter(fvh)以及posting highlighter.
2.1 Plain Highlighter
Plain Hightlighter是默认的高亮选择,由使用Lucene Hightlighter实现的。它主要是试图反应查询匹配逻辑。
如果你想高亮很多字段,而且带有复杂的查询,那么这个highlight不是很快的。为了准确地反映查询逻辑,它创建了一个很小的内存索引。
并通过Lucene的查询执行计划来重新运行原始的查询条件,从而获得对当前文档的低级匹配信息,每个字段和每个需要高亮显示的文档都会重复这个过程,所以是有性能隐患的。所以需要你换一个hightlight类型
POST /ecommerce/music/_search
   "query":{
       "match":{"desc":"雅马哈 "}
    },
   "highlight": {
       "fields": {
           "desc":{}
        }
    }
2.2 Fast Vector Highlighter
如果我们在mapping中对字段指定了term_vector参数,且参数值是with_positions_offsets,那么fast vector highlighter 将会替代plain highlighter成为默认的highlight类型。
它的主要特点:
# 快,特别是对于大字段来说比较快(>1M)
# 要求在mapping中设置term_vector=with_positions_offsets
# 可以分配不同的权重来匹配不同的位置
# 我们可以设定一些属性,boundary_chars,boundary_max_scan
fragment_offset
boundary_chars:分割字符,比如有些字符包含.,!?等特殊符号,我们可以指定是否遇到他们进行分割
boundary_max_scan:表示最多扫描多少个字符
fragment_offset:从什么地方开始进行fragment
phrase_limit: 可以阻止对很多短语进行分词从而吃掉很多内存,默认是256. 只有前256个phrase才会被考虑
PUT /blogs
 "mappings": {
   "news": {
     "properties": {
       "title": {
         "type": "text",
         "analyzer": "ik_max_word"
        },
       "content": {
         "type": "text",
         "analyzer": "ik_max_word",
         "term_vector" : "with_positions_offsets"
        }
      }
    }
  }
2.3 Posting Highlighter
如果我们在mapping里index_options设置成offsets,这个posting hightlighter将会代替plain highlighter
它有哪些特点呢?
# 比起plain highlight性能更快一点,因为它不需要重新分析文档:尤其是对大文件对性能的提高更为明显
# 占用更少的磁盘空间
# 把高亮显示和句子分开,方便阅读
# 使用BM25算法,使搜索的时候像是整篇文档
首先你在mapping需要预先定义:
PUT /website
   "mappings": {
       "article":{
           "properties": {
               "title":{
                   "type":"text"
               },
               "content":{
                   "type":"text",
                   "index_options": "offsets"
               }
            }
        }
    }
然后添加一条数据:
PUT /website/article/1
   "title":"Posting Highlighter",
   "content":"Note that the postings highlighter is meant toperform simple query terms highlighting, regardless of their positions."
高亮查询
POST /website/article/_search
   "query":{
       "match":{"content":"Highlighter"}
    },
   "highlight": {
       "fields": {
            "content":{}
        }
    }
请注意:postinghighlighter只是做一个简单的查询,而不会管它的位置,这也就是说也短语查询结合的时候,它会高亮显示所有term,而不管它是否查询匹配的一部分
POST /website/article/_search
   "query": {
       "match_phrase": {
          "content": {
              "query": "perform terms",
              "slop":3
           }
        }
    },
   "highlight": {
       "fields": {
           "content":{}
        }
    }
还有,postinghighlighter不支持很复杂的查询,比如match_phrase_prefix,返回结果不会高亮
所以我们需要从实际情况去考虑,一般情况下,用plain highlight也就足够了,不需要做其他额外的设置;如果对高亮的性能要求很高,可以尝试启用posting highlight;如果field的值特别大,超过了1M,那么可以用fastvector highlight
三 控制参数
3.1设置高亮html标签,默认是<em>标签
我们可以使用pre_tags属性和post_tags属性自定义高亮显示html标签,去替代默认的em标签
PUT /blogs
 "mappings": {
   "news": {
     "properties": {
       "title": {
         "type": "text",
         "analyzer": "ik_max_word"
        },
       "content": {
         "type": "text",
         "analyzer": "ik_max_word",
         "term_vector" : "with_positions_offsets"
        }
      }
    }
  }
PUT /blogs/news/1
   "title":"资本催熟的!流行!,或是共享经济大潮里的#流星#",
   "content":"迷你.KTV一开始就绑着/共享娱乐/的名号,和自助健身屋、自助咖啡厅、共享单车"
POST /blogs/news/_search
   "query": {
       "match":{"content":"迷你"}
    },
    "highlight": {
       "pre_tags": ["<h1>"],
       "post_tags": ["</h1>"],
       "fields": {
           "content":{}
        }
     }
3.2 强制使用某种highlight
当前你可能已经在mapping中设置了index_options选项为offsets或者设置了term_vector为with_positions_offsets,那么他们默认的高亮就不是plain highlight,如果我们就希望使用plain highlight,那么我们可以使用type参数来指定。他有三种可以选择的类型:plain,posting,fvh.
POST /blogs/news/_search
   "query": {
       "match":{"content":"迷你"}
    },
    "highlight": {
       "fields": {
           "content":{
               "type":"plain"
            }
        }
     }
3.3高亮片段fragment的设置
fragment_size: 某字段的值,长度是1万,但是我们一般不会在页面展示这么长,可能只是展示一部分。设置要显示出来的fragment文本判断的长度,默认是100
number_of_fragments:高亮的文本片段有多个,你希望展示几个
no_match_size: 可能没有高亮的文本片段,这个参数可以设置从该字段的开始制定长度为多少,然后作为默认的显示
POST /blogs/news/_search
   "query": {
       "match":{"content":"自助"}
    },
    "highlight": {
       "fields": {
           "content":{
               "fragment_size" : 2,
               "number_of_fragments" : 1,
               "no_match_size": 2
            }
        }
     }
四 全局设置
我们可以进行全局的设置高亮属性,然后fields字段可以重写这些全局设置
GET /_search
   "query" : {
       "match": { "user": "kimchy" }
    },
   "highlight" : {
       "number_of_fragments" : 3,
       "fragment_size" : 150,
       "fields" : {
           "_all" : { "pre_tags" : ["<em>"],"post_tags" : ["</em>"] },
           "bio.title" : { "number_of_fragments" : 0 },
           "bio.author" : { "number_of_fragments" : 0 },
           "bio.content" : { "number_of_fragments" : 5,"order" : "score" }
        }
    }
莫言静好、
关注
关注
点赞
12
收藏
打赏
评论
ElasticSearch之高亮显示
一 什么是highlightHighlight就是我们所谓的高亮,即允许对一个或者对个字段在搜索结果中高亮显示。比如字体加粗或者字体呈现和其他文本普通颜色等。为了执行高亮显示,该字段必须有实际的内容,并且这个字段必须存储,即在mapping中store设为true,不能只存在于内存中,否则系统会自动加载_source字段并匹配相关的列。 二 三种高亮类型ES提供了三种高亮类型,
复制链接
扫一扫
专栏目录
elasticsearch5.5.2实现搜索结果高亮显示和搜索建议
06-22
elasticsearch5.5.2用javaAPI实现搜索结果高亮显示和搜索建议源代码下载
54、ElasticSearch 排序、分页、高亮
最新发布
weixin_40968009的博客
11-22
23
ElasticSearch 排序、分页、高亮等相关知识点。
参与评论
您还未登录,请先
登录
后发表或查看评论
Elasticsearch搜索高亮标签自定义
jiamingchuan的博客
05-14
1136
Elasticsearch搜索高亮标签自定义
日常生活中我们使用搜索工具尝试查询一些信息的时候,常常可以看到返回的结果集中和我们查询条件相符合的字段被特殊的颜色所标记,这就是结果高亮显示。通过高亮显示用户可以明显的发现查询匹配的位置,ES使用highlight来实现搜索结果中一个或多个字段突出显示。
高亮显示需要字段中的内容,如果没有存储字段store=true,则加载实际的_source并从_source提取相关字段。
简单的例子
下面是一个简单的例子,使用的映射结构
PUT article
elasticsearch7.0.1-highlighter高亮检索详解
JornTang的博客
05-18
6729
highlighter高亮检索详解
参考官网https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html#highlighting-settings
什么是highlight
Highlight您能够从搜索结果中的一个或多个字段中获取突出显示的片段,以便您可以向...
基于Spring-Data-Elasticsearch 优雅的实现 多字段搜索 + 高亮 + 分页 + 数据同步✨
BASK2311的博客
11-06
1478
本篇文章主要是一些对Spring-Data-Elasticsearch使用上的记录和讲解,对原理和基础知识并没有介绍,适合有一定ES基础的朋友阅读。为了给项目添加一个好的搜索功能,我去学习了一下elasticsearch。在学习elasticsearch-client的期间,发现它提供的api不太优雅,用起来也不太舒服,而且我觉得有些操作完全是可以封装在内部的,比如获取数据后,对数据转化为bean的操作;
Elasticsearch查询——highlight(高亮显示)
热门推荐
大风的博客
12-24
2万+
Highlighters 高亮显示
日常生活中我们使用搜索工具尝试查询一些信息的时候,常常可以看到返回的结果集中和我们查询条件相符合的字段被特殊的颜色所标记,这就是结果高亮显示。通过高亮显示用户可以明显的发现查询匹配的位置,
ES使用highlight来实现搜索结果中一个或多个字段突出显示。
高亮显示需要字段中的内容,如果没有存储字段store=true,则加载实际的_source并从_sour...
Java中Elasticsearch高亮显示设置
storiessheep的博客
06-12
3462
Elasticsearch中高亮显示设置导入依赖配置RestHighLevelClient 类设置搜索高亮测试参考
Elasticsearch版本7.7.1
导入依赖
<properties>
<java.version>1.8</java.version>
<!-- 指定es版本 -->
<elasticsearch.version>7.7.1</elasticsearch.version>
</pr
六.全文检索ElasticSearch经典入门-高亮
墨家巨子@俏如来
04-04
4353
本篇文章我们来学习一下如何使用ElasticSearch实现搜索字段的高亮,许多应用都倾向于在每个搜索结果中 高亮 部分文本片段,以便让用户知道为何该文档符合查询条件。在 Elasticsearch 中检索出高亮片段也很容易。
elasticsearch高亮之Highlight原理
无风听海
03-17
2304
一、highlight简介
highlight是提升用户体验的重要手段,搜索引擎通过高亮突出命中关键字等方式,方便用户通过关键字周围的信息快速的确认是否是自己希望的结果;
highlight功能通常包含以下三个主要的处理过程
1.将字段文本拆分为小的片段;
2.找出最相关的片段;
3.高亮查询关键字;
二、elasticsearch的highlight功能
elasticsearch提供了专门的高亮请求参数highlight,返回的记过中也会包含对应的高亮信息;
在查询语句中,我们要求对text字段进行高亮
ElasticSearch系列七:ElasticSearch搜索技术深入讲解之高亮
qq_40595922的博客
10-07
290
介绍es检索的高亮
elasticsearch搜索关键字高亮显示
修理男爵的博客
04-29
2543
使用 elasticsearch 时,有一个很常见的需求是,能在页面上将搜索出的结果中属于关键字的文字,进行高亮显示。
elasticsearch 对这个做了一定的支持,它能查询结果的基础上,额外返回需要高亮显示关键字的整个文本,至于具体你想怎么用它,需要根据业务自行实现。
http 请求体方式
在查询的时候,增加参数highlight,pre_tags,post_tags。highlight 中添加需要进行高亮展示关键字的字段。
GET /data_collect/_search
...
六.Elasticsearch教程 - ElasticSearch高亮显示
名猿陈大浏的博客
04-02
1282
注:version:elasticsearch-7.11.2
添加测试数据
#新建索引
PUT /high_light_test
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"content": {
"type": "text",
"an
ElasticSearch原理怎么就可以实现高亮搜索
qq_45122010的博客
01-18
1167
1.介绍
Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
实时分析的分布式搜索引擎。
可以扩展到上百台服务器,处理PB级别的结...
Elasticsearch检索-高亮显示
不见其长,日有所长
04-22
1685
1. 前言
Elasticsearch中的默认高亮显示和solr的默认高亮都是基于lucene highlight的,之前没接触过搜索引擎的小伙伴可能不太了解什么是高亮下面看看官方文档上对于高亮的介绍。
Highlighters enable you to get highlighted snippets from one or more fields in your search result...
elasticsearch 实现搜索结果高亮,并在前端显示
01-28
2461
一开始以为es的高亮只要在dsl语句中添加一个highlight属性就够了,但结果并不是这样的,因为加上之后搜索结果并没有加上颜色样式,带有样式的结果在highlight对象中,所以需要将高亮属性值赋给搜索结果;
"highlight": { "require_field_match...
elasticsearch高亮显示
lizheng520lp的博客
01-12
763
我使用的是RestHighLevelClient,直接上代码吧
1、action
@RequestMapping(value = "/test2.do")
public void test2(){
List<PortalVO> list = new ArrayList<PortalVO>();
//指定索引库类型
...
干货 | Elasticsearch通用优化建议
铭毅天下Elasticsearch
08-19
6948
1、题记
Elasticsearch开发实战的后期会遇到性能问题,包括:创建索引性能、写入数据性能、检索性能等。网上有很多结合自己实际应用场景的相关优化建议,但“对症下药”才是关键。
实际,官网已经有非常明确的相关优化建议。如果没有实战场景,一些特性的理解可能不到位。为此,我特定将官网建议做了翻译,并加了结合实战开发的通俗理解注释。
此为第一篇:通用优化一般建议。
后续会跟进索引优化、写入...
ElasticSearch 的使用-高亮查询
飞一站的博客
09-17
874
目录
ElasticSearch 的使用 - 高亮查询
高亮匹配关键字的实现
坑点
生成和调用高亮查询语句的实现
对查询的结果进行高亮处理的实现
其他相关笔记
ElasticSearch 的使用 - 高亮查询
高亮匹配关键字的实现
官方文档:highlighter通常参考官方文档就能实现效果,只是在这里有一些坑做提前告知。
坑点
nested类型的字段的高亮处理和非nested的处理是不同的。
高亮的时候最好设置高亮类型highlighterType为plan,number_of..
Elasticsearch检索--高亮显示
爱琴孩的博客
12-24
3497
前言
Elasticsearch中的默认高亮显示和solr的默认高亮都是基于lucene highlight的,之前没接触过搜索引擎的小伙伴可能不太了解什么是高亮下面看看官方文档上对于高亮的介绍。
Highlighters enable you to get highlighted snippets from one or more fields in your search results ...
ES高亮显示语法
前者已逝,后者未至。
08-09
1626
掌握es高亮显示语法,包括自定义高亮标签属性、多字段高亮显示。
搜索引擎Lucene(6):查询结果高亮及词频提取
yuanwei1144的博客
09-20
373
1、结果高亮
Lucene对高亮显示提供 了两种实现模式,Highlighter和FastVectorHighlighter。FastVectorHighlighter速度快,功能更完美。但其是有一定条件的,在使用FastVectorHighlighter创建索引时,需要存储Field分词信息(TermVector.WITH_POSITIONS_OFFSETS),而Highligh...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:书香水墨
设计师:CSDN官方博客
返回首页
莫言静好、
CSDN认证博客专家
CSDN认证企业博客
码龄10年
暂无认证
378
原创
7万+
周排名
89万+
总排名
107万+
访问
等级
1万+
积分
768
粉丝
364
获赞
80
评论
1283
收藏
私信
关注
热门文章
使用Zuul构建API Gateway
101624
Linux下 sshd服务不能启动
60589
spark基础之shuffle机制和原理分析
33784
服务发现和注册和Eureka
25228
ElasticSearch之高亮显示
21783
分类专栏
分布式唯一ID
1篇
网络协议
15篇
分布式协议
3篇
消息中间件
1篇
Redis专栏
3篇
设计模式
6篇
计算机组成原理
5篇
操作系统
7篇
Java 并发专题
5篇
中间件底层专题
5篇
Netty源码分析和底层分析
1篇
数据结构
spring security & spring social
大数据/Hadoop
55篇
大数据/Hive
23篇
大数据/Scala 基础
16篇
大数据/kafka/源码
50篇
大数据/kafka
4篇
大数据/spark
23篇
大数据/spark/源码
22篇
大数据/spark/性能优化
4篇
大数据/flume
6篇
大数据/hue
1篇
大数据/hbase
16篇
大数据/hbase/优化设计
4篇
大数据/elasticsearch
16篇
大数据/sqoop
1篇
Linux
32篇
Java/核心
35篇
脚本/shell
4篇
脚本/bat
3篇
搜索/lucene
2篇
Web服务器/Apache
7篇
Web服务器/Nginx
10篇
搜索/elasticsearch
16篇
搜索/solr
架构
6篇
数据库/mysql
17篇
数据库/oracle
python/基础篇
14篇
消息中间件/activeMQ
3篇
消息中间件/rabbitMQ
开发拾遗
1篇
问题和解决方案
3篇
需求和解决方案
NoSQL数据库/redis
10篇
NoSQL数据库/mongoDB
Web框架/spring
Web框架/spring mvc
Web框架/struts2
Web框架/hibernate
微服务/spring boot
微服务/spring cloud
4篇
分布式/事务
1篇
分布式/锁
2篇
分布式工具
4篇
云平台docker
2篇
协议/https
Java虚拟机专题
13篇
最新评论
I/O控制器 和 DMA控制方式
一个人喝不醉:
讲解的很细致
文件内存映射和传统I/O机制
NOGGICARRY:
特地登录了来支持您,讲的太好了,感谢!!
Netty线程模型和核心概念
weixin_47177883:
看到后面就不懂了
Linux下 sshd服务不能启动
weixin_55489246:
很不错,终于解决问题了
Linux下 sshd服务不能启动
m0_58060991:
弄到凌晨才弄好 多亏了博主的这篇文章 感谢
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
分布式唯一ID
MySQL深度剖析之索引专题(2021)
MySQL深度剖析之事务隔离级别和锁机制(2021)
2021年61篇
2018年8篇
2017年308篇
2016年47篇
2015年8篇
目录
目录
分类专栏
分布式唯一ID
1篇
网络协议
15篇
分布式协议
3篇
消息中间件
1篇
Redis专栏
3篇
设计模式
6篇
计算机组成原理
5篇
操作系统
7篇
Java 并发专题
5篇
中间件底层专题
5篇
Netty源码分析和底层分析
1篇
数据结构
spring security & spring social
大数据/Hadoop
55篇
大数据/Hive
23篇
大数据/Scala 基础
16篇
大数据/kafka/源码
50篇
大数据/kafka
4篇
大数据/spark
23篇
大数据/spark/源码
22篇
大数据/spark/性能优化
4篇
大数据/flume
6篇
大数据/hue
1篇
大数据/hbase
16篇
大数据/hbase/优化设计
4篇
大数据/elasticsearch
16篇
大数据/sqoop
1篇
Linux
32篇
Java/核心
35篇
脚本/shell
4篇
脚本/bat
3篇
搜索/lucene
2篇
Web服务器/Apache
7篇
Web服务器/Nginx
10篇
搜索/elasticsearch
16篇
搜索/solr
架构
6篇
数据库/mysql
17篇
数据库/oracle
python/基础篇
14篇
消息中间件/activeMQ
3篇
消息中间件/rabbitMQ
开发拾遗
1篇
问题和解决方案
3篇
需求和解决方案
NoSQL数据库/redis
10篇
NoSQL数据库/mongoDB
Web框架/spring
Web框架/spring mvc
Web框架/struts2
Web框架/hibernate
微服务/spring boot
微服务/spring cloud
4篇
分布式/事务
1篇
分布式/锁
2篇
分布式工具
4篇
云平台docker
2篇
协议/https
Java虚拟机专题
13篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
莫言静好、
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值