前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >白话Elasticsearch62-进阶篇之Highlighting高亮显示

白话Elasticsearch62-进阶篇之Highlighting高亮显示

作者头像
小小工匠
发布2021-08-17 09:47:59
发布2021-08-17 09:47:59
1.3K00
代码可运行
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构
运行总次数:0
代码可运行


概述

继续跟中华石杉老师学习ES,第62篇

课程地址: https://www.roncoo.com/view/55


官网

7.3版本Highlighting: 戳这里

6.4版本: 戳这里


示例

为了演示这个功能,我们新建个索引

代码语言:javascript
代码运行次数:0
运行
复制
#新建artisan_index

PUT /artisan_index
{
  "mappings": {
    "artisan_type": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word"
        }
      }
    }
  }
}


#写入2条数据

PUT /artisan_index/artisan_type/1
{
  "title": "小工匠学习ES",
  "content": "小工匠的学习之旅!"
}


PUT /artisan_index/artisan_type/2
{
  "title": "我是小工匠",
  "content": "欢迎大家"
}

查询单个字段

使用highlight查询

代码语言:javascript
代码运行次数:0
运行
复制
GET /artisan_index/artisan_type/_search 
{
  "query": {
    "match": {
      "title": "小工匠"
    }
  },
  "highlight": {
    "fields": {
      "title": {}
    }
  }
}

返回

会变成红色,所以说你的指定的field中,如果包含了那个搜索词的话,就会在那个field的文本中,对搜索词进行红色的高亮显示。


查询多个字段

第二个例子: 查询多个字段

代码语言:javascript
代码运行次数:0
运行
复制
GET /blog_website/blogs/_search 
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "博客"
          }
        },
        {
          "match": {
            "content": "博客"
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "title": {},
      "content": {}
    }
  }
}

highlight中的field,必须跟query中的field一一对齐的


三种highlight介绍 (unified, plain, fvh)

unified


plain


fvh


总结:

  • 一般情况下,用plain highlight也就足够了,不需要做其他额外的设置
  • 如果对高亮的性能要求很高,可以尝试启用posting highlight
  • 如果field的值特别大,超过了1M,那么可以用fast vector highlight

设置高亮html标签,默认是标签

代码语言:javascript
代码运行次数:0
运行
复制
GET /artisan_index/artisan_type/_search 
{
  "query": {
    "match": {
      "content": "小工匠"
    }
  },
  "highlight": {
    "pre_tags": [""],
    "post_tags": [""], 
    "fields": {
      "content": {
        "type": "plain"
      }
    }
  }
}

高亮片段fragment的设置

代码语言:javascript
代码运行次数:0
运行
复制
GET /_search
{
    "query" : {
        "match": { "user": "kimchy" }
    },
    "highlight" : {
        "fields" : {
            "content" : {"fragment_size" : 150, "number_of_fragments" : 3, "no_match_size": 150 }
        }
    }
}
  • fragment_size:举个例子 你一个Field的值,比如有长度是1万,但是你不可能在页面上显示这么。。设置要显示出来的fragment文本判断的长度,默认是100
  • number_of_fragments:你可能你的高亮的fragment文本片段有多个片段,你可以指定就显示几个片段
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 官网
  • 示例
    • 查询单个字段
    • 查询多个字段
  • 三种highlight介绍 (unified, plain, fvh)
    • unified
    • plain
    • fvh
  • 设置高亮html标签,默认是标签
  • 高亮片段fragment的设置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档