elastic search 的 highlight

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> 标签高亮显示,方便用户识别搜索的关键词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值