MST

星途 面试题库

面试题:ElasticSearch的URI模式在复杂多条件搜索及排序中的应用

假设有一个包含博客文章的ElasticSearch索引,文章文档有标题、正文、发布时间、点赞数等字段。现在要求通过URI模式进行搜索,找到正文包含'技术创新',并且发布时间在近一个月内的文章,并按照点赞数从高到低排序。请详细说明实现思路及构建的URI。
33.8万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 筛选正文包含“技术创新”:利用ElasticSearch的全文检索功能,对正文内容进行匹配。
  2. 筛选发布时间在近一个月内:获取当前时间,减去一个月时间,得到一个时间范围,在查询中限定文章的发布时间在此范围内。
  3. 按照点赞数从高到低排序:在查询结果基础上,使用排序功能按点赞数字段从高到低排序。

构建的URI

假设索引名为blog_index,示例如下:

GET blog_index/_search?q=正文:技术创新&sort=点赞数:desc&filter_path=hits.hits._source&post_filter={"range":{"发布时间":{"gte":"now-1M/M"}}}

说明:

  • q=正文:技术创新:表示在正文中搜索包含“技术创新”的文档。
  • sort=点赞数:desc:按照点赞数字段从高到低排序。
  • filter_path=hits.hits._source:只返回命中文档的源数据部分,减少返回数据量。
  • post_filter={"range":{"发布时间":{"gte":"now-1M/M"}}}:使用后置过滤器,筛选发布时间在近一个月内的文档,now-1M/M表示从当前时间往前推一个月,并且将时间取到月份边界。实际应用中,需根据ElasticSearch版本及实际字段名准确调整。