一、高亮的作用
ES高亮是一种在搜索结果中标识用户查询的关键词的方法,此功能广泛应用于搜索引擎和文本编辑器中。在搜索结果列表中,高亮文本可以帮助用户快速找到相关的信息,提高搜索效率。在文本编辑器中,高亮文本可以帮助用户识别不同的代码语言,减少错误。
二、高亮实现的两种方式
1. 基于字段高亮
基于字段高亮是指将搜索结果中匹配的关键词标记,只标记匹配的字段。可以通过设置字段映射和搜索时指定搜索字段来实现。
PUT my_index/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "standard"
}
}
}
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {
"fields": {
"content": {}
}
}
}
2. 基于查询高亮
基于查询高亮是指将搜索结果中匹配的关键词标记,包括所有匹配的部分,不只是字段中匹配的部分。可以通过在查询中指定高亮选项来实现。
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {
"require_field_match": false,
"fields": {
"content": {}
}
}
}
三、高亮的配置选项
1. 简单配置
可以使用默认的高亮选项,只需要在查询中添加highlight字段即可。
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {}
}
2. 定制标记样式
可以通过设置pre_tags和post_tags选项来定制标记的样式。
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {
"pre_tags": [""],
"post_tags": [""],
"fields": {
"content": {}
}
}
}
3. 控制标记数量
可以通过设置fragment_size和number_of_fragments选项来控制每个字段的标记数量和标记的大小。
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {
"fields": {
"content": {
"fragment_size": 100,
"number_of_fragments": 3
}
}
}
}
4. 针对不同字段设置不同选项
可以为不同的字段设置不同的高亮选项,只需要在highlight选项中指定每个字段的配置。
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {
"fields": {
"title": {"pre_tags": [""], "post_tags": [""]},
"content": {"pre_tags": [""], "post_tags": [""], "number_of_fragments": 3}
}
}
}
四、高亮的性能优化
1. 使用缓存
ES高亮对于大量数据或者复杂查询非常消耗资源,可以通过禁用高亮缓存或者增加缓存大小来提高性能。
PUT my_index/_settings
{
"index.highlight.max_analyzed_offset": 1000000,
"index.highlight.max_phrase_window": 500
}
2. 避免不必要的高亮
可以使用pre_tags和post_tags选项来避免对不必要的字段进行高亮。
GET my_index/_search
{
"query": {
"match": {
"title": "es 高亮"
}
},
"highlight": {
"fields": {
"title": {"pre_tags": [], "post_tags": []},
"content": {"pre_tags": [""], "post_tags": [""], "number_of_fragments": 3}
}
}
}
3. 压缩标记文本
可以使用encoder选项来压缩标记文本,减少网络传输的数据量。
GET my_index/_search
{
"query": {
"match": {
"content": "es 高亮"
}
},
"highlight": {
"encoder": "html",
"fields": {
"content": {}
}
}
}
五、总结
ES高亮是一种强大的搜索功能,可以帮助用户快速找到相关信息。通过灵活的配置选项和性能优化,可以提高搜索效率和用户体验。
原创文章,作者:FESDF,如若转载,请注明出处:https://www.506064.com/n/334695.html
微信扫一扫
支付宝扫一扫