面试题答案
一键面试实现思路
- 筛选正文包含“技术创新”:利用ElasticSearch的全文检索功能,对正文内容进行匹配。
- 筛选发布时间在近一个月内:获取当前时间,减去一个月时间,得到一个时间范围,在查询中限定文章的发布时间在此范围内。
- 按照点赞数从高到低排序:在查询结果基础上,使用排序功能按点赞数字段从高到低排序。
构建的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版本及实际字段名准确调整。