Elasticsearch 综合搜索案例解析

Elasticsearch 是一个功能强大的搜索引擎,它不仅支持全文搜索,还提供了排序、分页、高亮显示等多种搜索结果处理功能。通过综合使用这些功能,我们可以构建出丰富而高效的搜索应用。本文将通过一个具体的案例,介绍如何在 Elasticsearch 中进行综合搜索。

综合搜索案例

假设我们正在开发一个酒店搜索应用,用户希望根据酒店名称进行搜索,并且希望结果按照价格升序排序,同时还能高亮显示搜索关键字,以及根据地理位置进行距离排序。

搜索需求

  • 搜索包含"如家"的酒店名称。
  • 结果按照价格升序排序。
  • 高亮显示搜索关键字"如家"。
  • 按照距离某个地理位置(例如,经纬度为 31.040699, 121.618075)的酒店进行距离升序排序。

Elasticsearch 查询

json 复制代码
GET /hotel/_search
{
  "query": {
    "match": {
      "name": "如家"
    }
  },
  "from": 0,  // 分页开始的位置
  "size": 20,  // 期望获取的文档总数
  "sort": [
    {
      "price": "asc"  // 普通排序,按价格升序
    },
    {
      "_geo_distance": {  // 距离排序
        "location": "31.040699,121.618075",
        "order": "asc",
        "unit": "km"
      }
    }
  ],
  "highlight": {
    "fields": {  // 高亮字段
      "name": {
        "pre_tags": ["<em>"],  // 用来标记高亮字段的前置标签
        "post_tags": ["</em>"]  // 用来标记高亮字段的后置标签
      }
    }
  }
}

查询解释

  1. 查询 (query): 使用 match 查询来搜索 name 字段中包含"如家"的文档。
  2. 分页 (fromsize): from 指定了结果的起始位置,size 指定了返回结果的数量。这里从第 0 个结果开始,返回 20 条结果。
  3. 排序 (sort): 包含两个排序条件,首先是按照 price 字段升序排序,其次是按照与指定地理位置的距离升序排序 (_geo_distance)。
  4. 高亮显示 (highlight): 指定了 name 字段的高亮显示,使用 <em> 标签包裹搜索关键字,以便在结果中突出显示。

结语

通过上述案例,我们可以看到 Elasticsearch 如何在一次查询中实现多种搜索结果处理功能的综合应用。这不仅提高了搜索结果的相关性,也增强了用户体验。理解并掌握这些功能,可以帮助我们在开发搜索应用时更加灵活和高效。希望本文能够帮助你更好地利用 Elasticsearch 的强大搜索能力。

相关推荐
IALab-检测行业AI报告生成1 天前
IACheck AI 报告审核助手:整体架构与详细结构说明
大数据·人工智能·架构·ai报告审核
码农杂谈00071 天前
AI 原生企业内容管理:4 大转型策略,破解老软件 AI 升级难题
大数据·人工智能·内容中台·企业内容管理系统·内容生产·ai内容生产·生成式 ai 品牌力
tuotali20261 天前
氢气压缩机技术核心要点测评
大数据·人工智能
志栋智能1 天前
AI驱动的系统自动化巡检:重塑IT基石的智慧“守护神”
大数据·运维·人工智能·云原生·自动化
qyr67891 天前
便携式太阳能折叠板市场白皮书与未来趋势展望
大数据·人工智能·物联网·市场分析·市场报告·便携式太阳能折叠板·太阳能折叠板
码农杂谈00071 天前
企业 AI 推理:告别黑箱决策,4 步构建可解释 AI 体系
大数据·人工智能
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-02-18
大数据·数据库·人工智能·经验分享·搜索引擎
城数派1 天前
我国逐日地表气压栅格数据(2005-2025年)
大数据·数据分析
派可数据BI可视化1 天前
一文读懂系列:数据仓库为什么分层,分几层?数仓建模方法有哪些
大数据·数据仓库·信息可视化·spark·商业智能bi
Light601 天前
不止于名:领码 SPARK 如何“链”动数据仓库、数据湖、中台与湖仓一体新纪元
大数据·数据仓库·数据湖·ipaas·湖仓一体·数据中台·领码 spark