当前位置:   article > 正文

es--基础--11--es服务API--高亮_es 高亮

es 高亮

es–基础–11–es服务API–高亮


1、介绍

  1. 可以让您从搜索结果中的一个或多个字段中获取突出显示的摘要,以便向用户显示查询匹配的位置。
  2. 当您请求突出显示(即高亮)时,响应结果的 highlight 字段中包括高亮的字段和高亮的片段。
  3. Elasticsearch 默认会用 标签标记关键字。

1.1、内容

  1. 高亮参数
  2. 自定义高亮片段
  3. 多字段高亮
  4. 高亮性能分析

2、高亮参数

2、高亮参数

2.1、boundary_chars

  1. 包含每个边界字符的字符串。
  2. 默认:! ?\ \ n。

2.2、boundary_max_scan

  1. 扫描边界字符的距离。
  2. 默认:20

2.3、boundary_scanner

  1. 指定如何分割突出显示的片段
  2. 支持三种方式
    1. chars
    2. sentence
    3. word。

2.4、boundary_scanner_locale

  1. 用来设置搜索和确定单词边界的本地化设置
  2. 此参数使用语言标记的形式如下
    1. “en-US”
    2. “fr-FR”
    3. “ja-JP”

2.5、encoder

  1. 表示代码段应该是HTML编码
  2. 默认HTML (HTML-转义代码段文本,然后插入高亮标记)

2.6、fields

  1. 指定检索高亮显示的字段。
  2. 可以使用通配符来指定字段。例如,可以指定comment_*来获取以comment_开头的所有文本和关键字字段的高亮显示。

2.7、force_source

  1. 根据源高亮显示
  2. 默认:false。

2.8、fragmenter

  1. 指定文本应如何在突出显示片段中拆分
  2. 支持参数
    1. simple
    2. span。

2.9、fragment_offset

  1. 控制要开始突出显示的空白。仅在使用fvh highlighter时有效。

2.10、fragment_size

  1. 字符中突出显示的片段的大小。
  2. 默认:100。

2.11、highlight_query

  1. 突出显示搜索查询之外的其他查询的匹配项。
  2. 在使用重打分查询时,特别有用,因为默认情况下高亮显示不会考虑这些问题。

2.12、matched_fields

  1. 组合多个匹配结果以突出显示单个字段,对于使用不同方式分析同一字符串的多字段。
  2. 所有的matched_fields必须将term_vector设置为with_positions_offsets,但是只有将匹配项组合到的字段才会被加载,因此只有将store设置为yes才能使该字段受益。
  3. 只适用于fvh highlighter。

2.13、no_match_size

  1. 如果没有要突出显示的匹配片段,则希望从字段开头返回的文本量。
  2. 默认:0(不返回任何内容)。

2.14、number_of_fragments

  1. 返回的片段的最大数量。
    1. 如果设置为0,则不会返回任何片段。且忽略fragment_size。
    2. 如果设置不为0,突出显示并返回整个字段内容。
  2. 当需要突出显示短文本(如标题或地址),但不需要分段时,使用此配置非常方便。
  3. 默认:5。

2.15、order

  1. 设置为score时,按分数对突出显示的片段进行排序。
  2. 默认情况下,片段将按照它们在字段中出现的顺序输出(order:none)。将此选项设置为score将首先输出最相关的片段。每个高亮应用自己的逻辑来计算相关性得分。

2.16、phrase_limit

  1. 控制文档中所考虑的匹配短语的数量。防止fvh highlighter分析太多的短语和消耗太多的内存。
  2. 提高限制会增加查询时间并消耗更多内存。
  3. 默认:256。

2.17、pre_tags

  1. 与post_tags一起使用,定义用于突出显示文本的HTML标记。
  2. 默认情况下,突出显示的文本被包装在标记中。指定为字符串数组。

2.18、post_tags

  1. 与pre_tags一起使用,定义用于突出显示文本的HTML标记。
  2. 默认情况下,突出显示的文本被包装在标记中。指定为字符串数组。

2.19、require_field_match

  1. 是否突出显示包含查询匹配的字段。
    1. true(默认):只突出显示包含查询匹配的字段
    2. false: 突出显示所有字段

2.20、tags_schema

  1. 设置为使用内置标记模式的样式。

2.21、type

  1. 使用的高亮模式
    1. unified(默认)
    2. plain
    3. fvh

3、自定义高亮片段

使用自定义标签,在高亮属性中给需要高亮的字段加上 pre_tags 和 post_tags 即可。

例如,搜索 title 字段中包含关键词 javascript 的书籍并使用自定义 HTML 标签高亮关键词,查询语句如下:

GET /books/_search
{
  "query": {
    "match": { "title": "javascript" }
  },
  "highlight": {
    "fields": {
      "title": {
        "pre_tags": ["<strong>"],
        "post_tags": ["</strong>"]
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4、多字段高亮

搜索 title 字段的时候,我们期望 description 字段中的关键字也可以高亮,这时候就需要把 require_field_match 属性的取值设置为 fasle。require_field_match 的默认值为 true,只会高亮匹配的字段。多字段高亮的查询语句如下:

GET /books/_search
{
  "query": {
    "match": { "title": "javascript" }
  },
  "highlight": {
    "require_field_match": false,
    "fields": {
      "fieldTitle": {
        "pre_tags": ["<strong>"],
        "post_tags": ["</strong>"]
      },
      "fieldContent": {
        "pre_tags": ["<strong>"],
        "post_tags": ["</strong>"]
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

5、高亮性能分析

5.1、高亮器分类

  1. highlighter 高亮器(默认)
  2. postings-highlighter 高亮器
  3. fast-vector-highlighter 高亮器。

5.1、highlighter

  1. 最基本的高亮器,实现高亮功能
  2. 需要对 _source 中保存的原始文档 进行二次分析,其速度在三种高亮器里最慢,优点是不需要额外的存储空间。

5.2、postings-highlighter

  1. 实现高亮功能
  2. 不需要二次分析,但是需要在字段的映射中设置 index_options,参数的取值为 offsets,即保存关键词的偏移量,速度快于highlighter 高亮器。

配置 comment 字段使用 postings-highlighter 高亮器,映射如下:

PUT /example
{
  "mappings": {
    "doc": {
      "properties": {
        "comment": {
          "type": "text",
          "index_options": "offsets"
        }
      }
    }
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

5.3、fast-vector-highlighter

  1. 实现高亮功能
  2. 速度最快,但是需要在字段的映射中设置 term_vector,参数的取值为 with_positions_offsets,即保存关键词的位置和偏移信息,占用的存储空间最大,是典型的空间换时间的做法。

配置 comment 字段使用 fast-vector-highlighter 高亮器,映射如下:

PUT /example
{
  "mappings": {
    "doc": {
      "properties": {
        "comment": {
          "type": "text",
          "term_vector": "with_positions_offsets"
        }
      }
    }
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/499035
推荐阅读
相关标签
  

闽ICP备14008679号