面试题答案
一键面试关键参数
- fields:指定要高亮显示的字段。例如,如果文档中有
title
和content
字段,可指定fields: ["title", "content"]
。 - pre_tags:高亮文本的前缀标签,默认是
<em>
。例如,可设置为<span style="color:red">
来改变高亮样式。 - post_tags:高亮文本的后缀标签,默认是
</em>
。需与pre_tags
匹配,如</span>
。 - fragment_size:当对长文本进行高亮时,指定每个高亮片段的大小,默认100个字符。
- number_of_fragments:指定从长文本中生成的高亮片段数量,默认5个。
API调用方式
以使用Elasticsearch的RESTful API为例:
- 构建查询请求:假设我们要在
my_index
索引中对title
字段搜索并高亮显示关键词example
。
{
"query": {
"match": {
"title": "example"
}
},
"highlight": {
"fields": {
"title": {}
},
"pre_tags": ["<span style='color:red'>"],
"post_tags": ["</span>"]
}
}
- 发送请求:通过HTTP POST请求发送到
http://<elasticsearch_host>:<port>/my_index/_search
(将<elasticsearch_host>
和<port>
替换为实际的主机地址和端口)。
响应结果中会包含高亮部分,类似如下结构:
{
"hits": {
"hits": [
{
"_source": {
"title": "This is an example title"
},
"highlight": {
"title": ["This is an <span style='color:red'>example</span> title"]
}
}
]
}
}