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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 白话Elasticsearch62-进阶篇之Highlighting高亮显示

20190806092132811.jpg

概述

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

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


官网

7.3版本Highlighting: 戳这里


20190913151527851.png

6.4版本: 戳这里


示例

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

#新建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查询

GET /artisan_index/artisan_type/_search 
{
  "query": {
    "match": {
      "title": "小工匠"
    }
  },
  "highlight": {
    "fields": {
      "title": {}
    }
  }
}


返回


20190913154357429.png


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


查询多个字段

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

GET /blog_website/blogs/_search 
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "博客"
          }
        },
        {
          "match": {
            "content": "博客"
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "title": {},
      "content": {}
    }
  }
}

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


20190913155130599.png

三种highli


ght介绍 (unified, plain, fvh)


20190913155529689.png


unified


20190913160450814.png


plain


20190913212338640.png


fvh


20190913212353301.png

总结:

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


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


20190913225133341.png

GET /artisan_index/artisan_type/_search 
{
  "query": {
    "match": {
      "content": "小工匠"
    }
  },
  "highlight": {
    "pre_tags": ["<tag1>"],
    "post_tags": ["</tag1>"], 
    "fields": {
      "content": {
        "type": "plain"
      }
    }
  }
}


20190913225059342.png


高亮片段fragment的设置


20190913225222463.png

GET /_search
{
    "query" : {
        "match": { "user": "kimchy" }
    },
    "highlight" : {
        "fields" : {
            "content" : {"fragment_size" : 150, "number_of_fragments" : 3, "no_match_size": 150 }
        }
    }
}

20190913225317230.png



fragment_size:举个例子 你一个Field的值,比如有长度是1万,但是你不可能在页面上显示这么。。设置要显示出来的fragment文本判断的长度,默认是100

number_of_fragments:你可能你的高亮的fragment文本片段有多个片段,你可以指定就显示几个片段

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
20 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
3月前
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
51 0
|
6月前
|
监控 搜索推荐 安全
面经:Elasticsearch全文搜索引擎原理与实战
【4月更文挑战第10天】本文是关于Elasticsearch面试准备的博客,重点讨论了四个核心主题:Elasticsearch的分布式架构和数据模型、CRUD操作与查询DSL、集群管理与性能优化,以及安全与插件扩展。文中通过代码示例介绍了如何进行文档操作、查询以及集群管理,并强调理解Elasticsearch的底层原理和优化策略对面试和实际工作的重要性。
68 6
|
自然语言处理 前端开发 Java
|
自然语言处理 前端开发 Java
十.全文检索ElasticSearch经典入门-自动补全功能
十.全文检索ElasticSearch经典入门-自动补全功能
|
SQL JSON 自然语言处理
全文检索工具elasticsearch:第一章:理论知识
全文检索工具elasticsearch:第一章:理论知识
268 0
|
SQL 自然语言处理 Java
Elasticsearch连续剧之实战搜索文档
前几篇文章中,小编给大家介绍了一些es的基本操作,还有常用分词器的搭建,现在给大家来示范一下es的一些常见文档搜索方式
|
SQL JSON 自然语言处理
elasticsearch实战三部曲之三:搜索操作
本文是《elasticsearch实战三部曲》的终篇,作为elasticsearch的核心功能,搜索的重要性不言而喻,今天的实战都会围绕搜索展开
148 0
elasticsearch实战三部曲之三:搜索操作
|
JSON Ubuntu 程序员
elasticsearch实战三部曲之二:文档操作
本文是《elasticsearch实战三部曲》系列的第二篇,上一篇文章我们动手熟悉了索引相关的基本操作,现在一起来熟悉文档相关的操作
188 0
elasticsearch实战三部曲之二:文档操作