Elasticsearch 搜索高亮功能及示例

在全文搜索中,高亮显示搜索关键字是一种常见的需求,它可以帮助用户快速定位到搜索词在文本中的位置。Elasticsearch 提供了强大的高亮功能,允许我们在搜索结果中突出显示匹配的文本片段。

高亮原理

Elasticsearch 的高亮功能通过在搜索结果中将关键字用特定的 HTML 标签标记出来实现。然后在前端页面中,可以给这些标签添加 CSS 样式,使其突出显示。

高亮语法

在 Elasticsearch 查询中,可以通过 highlight 参数来指定高亮的字段和一些高亮选项。基本语法如下:

json 复制代码
GET /index/_search
{
  "query": {
    "match": {
      "FIELD": "SEARCH_TERM"
    }
  },
  "highlight": {
    "fields": {
      "FIELD": {
        "pre_tags": ["<em>"],  // 标记高亮字段的前置标签
        "post_tags": ["</em>"]  // 标记高亮字段的后置标签
      }
    }
  }
}

高亮字段与搜索字段重合示例

当高亮字段与搜索字段一致时,即我们希望在搜索的字段上直接进行高亮显示。

示例

假设我们有一个 hotel 索引,其中 description 字段包含了酒店的描述信息,我们希望在搜索时高亮显示 description 字段中的关键字 "spa"。

json 复制代码
GET /hotel/_search
{
  "query": {
    "match": {
      "description": "spa"
    }
  },
  "highlight": {
    "fields": {
      "description": {
        "pre_tags": ["<em>"],
        "post_tags": ["</em>"]
      }
    }
  }
}

高亮字段与搜索字段不重合示例

当高亮字段与搜索字段不一致时,即我们希望在搜索的字段上进行高亮显示,但是高亮的字段是另一个字段。

示例

假设我们希望在 hotel 索引中搜索 name 字段中的 "如家",但是我们想在 description 字段上进行高亮显示。

json 复制代码
GET /hotel/_search
{
  "query": {
    "match": {
      "name": "如家"
    }
  },
  "highlight": {
    "fields": {
      "description": {
        "pre_tags": ["<em>"],
        "post_tags": ["</em>"],
        "require_field_match": false  // 允许高亮非搜索字段
      }
    }
  }
}

在这个例子中,我们使用了 require_field_match 设置为 false,这样即使 description 字段不是搜索字段,我们也可以在其上进行高亮显示。

结语

Elasticsearch 的搜索高亮功能极大地增强了搜索结果的可读性,帮助用户快速识别信息。通过合理配置高亮参数,我们可以在不同的字段上实现高亮效果,无论是在搜索字段上直接高亮,还是在其他字段上间接高亮。希望本文能帮助你更好地理解和使用 Elasticsearch 的搜索高亮功能。

相关推荐
青云交3 分钟前
大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
大数据·性能优化·impala·案例分析·代码示例·跨数据中心·挑战对策
soso196839 分钟前
DataWorks快速入门
大数据·数据仓库·信息可视化
The_Ticker1 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
java1234_小锋1 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客1 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
我的运维人生1 小时前
Elasticsearch实战应用:构建高效搜索与分析平台
大数据·elasticsearch·jenkins·运维开发·技术共享
大数据编程之光1 小时前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
在下不上天3 小时前
Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复
大数据·开发语言·python
智慧化智能化数字化方案3 小时前
华为IPD流程管理体系L1至L5最佳实践-解读
大数据·华为