MST
星途 面试题库

面试题:ElasticSearch中高亮显示的基础实现方式

在ElasticSearch中,简要描述如何实现基本的高亮显示功能,包括需要涉及的关键参数和API调用方式。
13.4万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

关键参数

  1. fields:指定要高亮显示的字段。例如,如果文档中有titlecontent字段,可指定fields: ["title", "content"]
  2. pre_tags:高亮文本的前缀标签,默认是<em>。例如,可设置为<span style="color:red"> 来改变高亮样式。
  3. post_tags:高亮文本的后缀标签,默认是</em>。需与pre_tags匹配,如</span>
  4. fragment_size:当对长文本进行高亮时,指定每个高亮片段的大小,默认100个字符。
  5. number_of_fragments:指定从长文本中生成的高亮片段数量,默认5个。

API调用方式

以使用Elasticsearch的RESTful API为例:

  1. 构建查询请求:假设我们要在my_index索引中对title字段搜索并高亮显示关键词example
{
    "query": {
        "match": {
            "title": "example"
        }
    },
    "highlight": {
        "fields": {
            "title": {}
        },
        "pre_tags": ["<span style='color:red'>"],
        "post_tags": ["</span>"]
    }
}
  1. 发送请求:通过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"]
                }
            }
        ]
    }
}