es–基础–11–es服务API–高亮
1、介绍
- 可以让您从搜索结果中的一个或多个字段中获取突出显示的摘要,以便向用户显示查询匹配的位置。
- 当您请求突出显示(即高亮)时,响应结果的 highlight 字段中包括高亮的字段和高亮的片段。
- Elasticsearch 默认会用 标签标记关键字。
1.1、内容
- 高亮参数
- 自定义高亮片段
- 多字段高亮
- 高亮性能分析
2、高亮参数
2、高亮参数
2.1、boundary_chars
- 包含每个边界字符的字符串。
- 默认:! ?\ \ n。
2.2、boundary_max_scan
- 扫描边界字符的距离。
- 默认:20
2.3、boundary_scanner
- 指定如何分割突出显示的片段
- 支持三种方式
- chars
- sentence
- word。
2.4、boundary_scanner_locale
- 用来设置搜索和确定单词边界的本地化设置
- 此参数使用语言标记的形式如下
- “en-US”
- “fr-FR”
- “ja-JP”
2.5、encoder
- 表示代码段应该是HTML编码
- 默认HTML (HTML-转义代码段文本,然后插入高亮标记)
2.6、fields
- 指定检索高亮显示的字段。
- 可以使用通配符来指定字段。例如,可以指定comment_*来获取以comment_开头的所有文本和关键字字段的高亮显示。
2.7、force_source
- 根据源高亮显示
- 默认:false。
2.8、fragmenter
- 指定文本应如何在突出显示片段中拆分
- 支持参数
- simple
- span。
2.9、fragment_offset
- 控制要开始突出显示的空白。仅在使用fvh highlighter时有效。
2.10、fragment_size
- 字符中突出显示的片段的大小。
- 默认:100。
2.11、highlight_query
- 突出显示搜索查询之外的其他查询的匹配项。
- 在使用重打分查询时,特别有用,因为默认情况下高亮显示不会考虑这些问题。
2.12、matched_fields
- 组合多个匹配结果以突出显示单个字段,对于使用不同方式分析同一字符串的多字段。
- 所有的matched_fields必须将term_vector设置为with_positions_offsets,但是只有将匹配项组合到的字段才会被加载,因此只有将store设置为yes才能使该字段受益。
- 只适用于fvh highlighter。
2.13、no_match_size
- 如果没有要突出显示的匹配片段,则希望从字段开头返回的文本量。
- 默认:0(不返回任何内容)。
2.14、number_of_fragments
- 返回的片段的最大数量。
- 如果设置为0,则不会返回任何片段。且忽略fragment_size。
- 如果设置不为0,突出显示并返回整个字段内容。
- 当需要突出显示短文本(如标题或地址),但不需要分段时,使用此配置非常方便。
- 默认:5。
2.15、order
- 设置为score时,按分数对突出显示的片段进行排序。
- 默认情况下,片段将按照它们在字段中出现的顺序输出(order:none)。将此选项设置为score将首先输出最相关的片段。每个高亮应用自己的逻辑来计算相关性得分。
2.16、phrase_limit
- 控制文档中所考虑的匹配短语的数量。防止fvh highlighter分析太多的短语和消耗太多的内存。
- 提高限制会增加查询时间并消耗更多内存。
- 默认:256。
2.17、pre_tags
- 与post_tags一起使用,定义用于突出显示文本的HTML标记。
- 默认情况下,突出显示的文本被包装在标记中。指定为字符串数组。
2.18、post_tags
- 与pre_tags一起使用,定义用于突出显示文本的HTML标记。
- 默认情况下,突出显示的文本被包装在标记中。指定为字符串数组。
2.19、require_field_match
- 是否突出显示包含查询匹配的字段。
- 值
- true(默认):只突出显示包含查询匹配的字段
- false: 突出显示所有字段
2.20、tags_schema
- 设置为使用内置标记模式的样式。
2.21、type
- 使用的高亮模式
- 值
- unified(默认)
- plain
- 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>"]
}
}
}
}
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>"]
}
}
}
}
5、高亮性能分析
5.1、高亮器分类
- highlighter 高亮器(默认)
- postings-highlighter 高亮器
- fast-vector-highlighter 高亮器。
5.1、highlighter
- 最基本的高亮器,实现高亮功能
- 需要对 _source 中保存的原始文档 进行二次分析,其速度在三种高亮器里最慢,优点是不需要额外的存储空间。
5.2、postings-highlighter
- 实现高亮功能
- 不需要二次分析,但是需要在字段的映射中设置 index_options,参数的取值为 offsets,即保存关键词的偏移量,速度快于highlighter 高亮器。
配置 comment 字段使用 postings-highlighter 高亮器,映射如下:文章来源:https://www.toymoban.com/news/detail-696127.html
PUT /example
{
"mappings": {
"doc": {
"properties": {
"comment": {
"type": "text",
"index_options": "offsets"
}
}
}
}
}
5.3、fast-vector-highlighter
- 实现高亮功能
- 速度最快,但是需要在字段的映射中设置 term_vector,参数的取值为 with_positions_offsets,即保存关键词的位置和偏移信息,占用的存储空间最大,是典型的空间换时间的做法。
配置 comment 字段使用 fast-vector-highlighter 高亮器,映射如下:文章来源地址https://www.toymoban.com/news/detail-696127.html
PUT /example
{
"mappings": {
"doc": {
"properties": {
"comment": {
"type": "text",
"term_vector": "with_positions_offsets"
}
}
}
}
}
到了这里,关于es--基础--11--es服务API--高亮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!