在连接elsearch中java客服端进行过滤然后加weight操作时发现java中api没有这个操作了
//对java-article中所有文档text字段为“文本"的进行搜索并对结果中userId字段为1的进行加weight
SearchResponse<Article> search = client.search(request -> request.index("java-article")
.query(value -> value.
functionScore(v->v.
query(query->query.
match(mq->mq.
field("text").query(fv->fv.stringValue("文本"))))
.functions(new FunctionScore()))),Article.class);
GET /java-article/_search
{
"query": {
"function_score": {
"query": {
"match": {
"text": "文本"
}
},
"functions": [
{
"filter": {
"term": {
"userId": 1
}
},
"weight": 2,
}
]
}
}
}
这是正常结果
这是加weight之后