场景,电商中常见的对某些品进行简单置顶处理,用ES的方式来实现
二次召回
第一次,查询当前要置顶的id是否存在
第二次,使用es的pinned语法来进入置顶操作
GET /_search
{
"query": {
"pinned": {
"ids": [ "1", "4", "100" ],
"organic": {
"match": {
"description": "iphone"
}
}
}
},
"sort":[
{
"_score": {
"order": "desc"
}
},
]
}
注意: 如果没有把_score做为排序条件,置顶排序会失效
Java ES Builder实现
maven依赖
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>x-pack-core</artifactId>
<version>7.10.2</version>
</dependency>
代码块
QueryBuilder queryBuilder =
new PinnedQueryBuilder(QueryBuilders.matchAllQuery(), new String[]{"1001"});