背景
我们在使用 ES 查询的时候,除了 bool 查询 ,还会经常用到 function_score 查询,简单来说,function_score 就是对打分结果进行算法重排!
鉴于网上基本上都是DSL写法,我找了好久没有找到JAVA应该怎么写,
因此追踪了一下源码通过一顿分析得知了使用方法…在此开帖记录下.
function_score查询
function_score的用法 相信大家能找到这个博客 说明已经清楚了,就不赘述了,想了解的直接跳链接
链接: Function Score Query用法
特别提醒:我的ES版本是 7.6.12,不对其他版本负责!!!
废话不多说 直接上代码.
// 首先定义多个function 数组 指定长度
FunctionScoreQueryBuilder.FilterFunctionBuilder[] functionBuilder = new FunctionScoreQueryBuilder.FilterFunctionBuilder[functionScorePacking.size()];
//给function赋值
for (int i = 0; i < handles.size(); i++) {
//handles 是我用来生成 function的 方法 ,包括高斯 包括 向量之类的
functionBuilder[i] = new FunctionScoreQueryBuilder.FilterFunctionBuilder(handles.get(i).buildFunctionBuilder(param));
}
// query 主查询语句 functionBuilder就是咱的 function数组
return QueryBuilders.functionScoreQuery(query,functionBuilder);
当然 也有 单个 function的,我就不举例了.追看源码很容易知道怎么写