这是我当前的弹性查询。目前根据review_rating进行排序。我想让一些产品在上面得到提升。有没有办法更新脚本函数来更新review_rating值,这样product_id"abc xyz";以及";dfgh rt";可以在顶部提升。
GET products/_search
{
"query": {
"boosting": {
"positive": {
"function_score": {
"query": {
"bool": {
"boost": "0.1",
"must": [
{
"match_all": {}
}
]
}
},
"boost_mode": "avg",
"score_mode": "sum",
"functions": [
{
"script_score": {
"script": {
"source": "double mscore;n int initBoostFactor = params.initBoostFactor;nif(params.boost_products.size()>0 && (doc[params.boost_field].size()!=0 && params.boost_products.contains(doc[params.boost_field].value))){n mscore=(priority+1)*initBoostFactor;n}n return mscore",
"lang": "painless",
"params": {
"boost_products": [
"abc-xyz",
"dfgh-rt"
]
"initBoostFactor": 100,
"boost_field": "product_id"
}
}
}
}
]
}
}
}
},
"sort": [
{
"review_rating": {
"order": "desc"
}
}
]
}
您可以使用固定查询来实现您想要的目标。固定查询会提升所选文档的排名,使其高于匹配给定查询的文档。该特征通常用于引导搜索者找到被推广到任何"网站"之上的精心策划的文档;有机的";搜索的匹配项。被提拔的或";被钉住";使用存储在CCD_ 1字段中的文档ID来识别文档。
所以你的查询应该是这样的:
GET /_search
{
"query": {
"pinned": {
"ids": [ "abc-xyz", "dfgh-rt"],
"organic": {
[-->your query here<--]
}
}
}
}