有些时候,我们可能需要人工干预ES的搜索结果,让指定的内容置顶,ES提供了pinned语法来实现该功能。
代码语言:javascript复制GET article_search/_search
{
"query" : {
"pinned":{
"ids" : ["1234567"],
"organic": {
"match" : {
"title": "制作云"
}
}
}
},
"size" : 10,
"from" : 0
}
pinned里面的ids表示要置顶的文档id列表。
organic是任意的查询语句。我们可以换成一个复杂的查询:
代码语言:javascript复制GET article_search/_search
{
"query" : {
"pinned":{
"ids" : ["1234567"],
"organic": {
"bool" : {
"should" : [
{
"match_phrase" : {
"title" : {
"query" : "制作云",
"boost" : 2,
"slop" : 4
}
}
},
{
"multi_match" : {
"query" : "制作云",
"type" : "best_fields",
"fields" : ["title", "plain"],
"minimum_should_match" : "20%",
"boost" : 1
}
}
],
"minimum_should_match" : 1
}
}
}
},
"size" : 10,
"from" : 0
}
看文档说似乎是从ES 7.4版本开始支持这个语法。