> 文章列表 > Elasticsearch 实战篇 | 黑马旅游

Elasticsearch 实战篇 | 黑马旅游

Elasticsearch 实战篇 | 黑马旅游

一、酒店搜索和分页

需求:实现黑马旅游的酒店搜索功能,完成关键字搜索和分页

1、定义实体类,接收前端的参数

如果当搜索条件为空的时候,就返回全部数据,不为空才按照key来搜索

二、条件过滤

修改实体类,加几个参数,参数就是条件

城市city、品牌brand、星级starName都是精确匹配,而价格price是范围匹配,过滤条件要放到filter里面,这样不会参与算分,提高性能

注意:多个条件之间用AND关系,组合条件用BooleanQuery,参数都要做非空判断

三、附近的酒店

前端带着我的位置来请求我们的接口,我们用这个location去es找,按千米为单位来排序

我们拿对象的时候,要多拿个sort字段,表示目标距离我们多少km,要返回给前端 

四、广告制定

需求:默认情况是按照相关性来排序的,但是我们想给某些酒店打广告,放到前面。让指定的酒店在搜索结果排名中指定。

  1. 给hotelDoc类添加isAD字段,boolean类型,表示是否打广告
  2. 挑选几个喜欢的酒店,给文档数据添加isAD字段,为true
  3. 修改search方法,添加function score功能,给isAD值为true的增加权重

先增加了4个广告

满足过滤条件的就会执行算分函数,增加权重,直接乘10