Elasticsearch 的 highlight
功能用于在搜索结果中突出显示匹配的文本片段。这对于用户界面上的搜索结果展示非常有用,因为它可以帮助用户快速定位到他们搜索的关键词。
1. 基本用法
在 Elasticsearch 中,highlight
功能通常在查询中使用,并可以指定高亮的字段。以下是一个简单的例子:
GET /my_index/_search
{
"query": {
"match": {
"content": "Elasticsearch"
}
},
"highlight": {
"fields": {
"content": {}
}
}
}
在上面的查询中,我们搜索 content
字段中包含 “Elasticsearch” 的文档,并且在结果中高亮显示匹配的部分。
2. 高亮选项
highlight
提供了多种选项来定制高亮的行为:
pre_tags
:设置匹配词的前缀标签(默认是<em>
)。post_tags
:设置匹配词的后缀标签(默认是</em>
)。fragment_size
:定义单个高亮片段的最大长度。number_of_fragments
:定义返回的高亮片段的数量。
示例:
GET /my_index/_search
{
"query": {
"match": {
"content": "Elasticsearch"
}
},
"highlight": {
"pre_tags": ["<strong>"],
"post_tags": ["</strong>"],
"fields": {
"content": {
"fragment_size": 100,
"number_of_fragments": 3
}
}
}
}
在这个示例中,匹配的关键词将被包裹在 <strong>
标签内,并且每个高亮片段的最大长度为 100 个字符,最多返回 3 个片段。
3. 高亮结果的结构
Elasticsearch 返回的结果中,highlight
部分将包含高亮显示的文本。例如:
{
"hits": {
"total": 1,
"hits": [
{
"_source": {
"content": "Elasticsearch is a powerful search engine"
},
"highlight": {
"content": [
"<strong>Elasticsearch</strong> is a powerful search engine"
]
}
}
]
}
}
这里,content
字段的匹配部分被 <strong>
标签高亮显示,方便用户识别搜索的关键词。