函数查询Java API使用方法(5.x版本) FunctionScoreQueryBuilder FieldValueFactorFunctionBuilder
Elasticsearch | 作者 xiaobingy | 发布于2017年09月06日 | 阅读数:14307
以下代码是2.x版本例子,5.x后QueryBuilder.add方法没有了,如何实现,请大神指教。
// FunctionScoreQueryBuilder query =
// QueryBuilders.functionScoreQuery(QueryBuilders.boolQuery()
// .should(QueryBuilders.matchQuery("title", "航母"))
// ).add(ScoreFunctionBuilders.scriptFunction(
// new Script("(_score + 1/(timestamp-doc['timestamp'].value.toDouble()+1))/2"
// ,ScriptType.INLINE,"groovy",params))
// ).scoreMode("first")
// .boostMode(CombineFunction.REPLACE);
// FunctionScoreQueryBuilder query =
// QueryBuilders.functionScoreQuery(QueryBuilders.boolQuery()
// .should(QueryBuilders.matchQuery("title", "航母"))
// ).add(ScoreFunctionBuilders.scriptFunction(
// new Script("(_score + 1/(timestamp-doc['timestamp'].value.toDouble()+1))/2"
// ,ScriptType.INLINE,"groovy",params))
// ).scoreMode("first")
// .boostMode(CombineFunction.REPLACE);
3 个回复
xiaobingy
赞同来自: delecarnegie
我这边是QueryBuilders.functionScoreQuery(QueryBuilder, FieldValueFactorFunctionBuilder),已OK。
方法形式上略有不同。
Cheetah
赞同来自:
添加方法已删除,所有过滤器和函数必须作为构造函数参数提供,方法是创建一个FunctionScoreQueryBuilder.FilterFunctionBuilder对象数组,每个过滤器/函数对包含一个元素
xiaozhi - 90后小鲜肉
赞同来自:
"from": 0,
"size": 100,
"query": {
"bool": {
"filter": {
"script": {
"script": {
"inline": "doc['category_code'].value - doc['user_group_id'].value == 864",
"lang": "painless"
},
"boost": 1
}
}
}
}
} 您好,请问 es 5/6 用java API 怎么实现