我有3种类型:[place, doctor, article],每种类型都有一个名为title的字段。article类型有一个名为body的额外字段。我想要匹配一个查询这3种类型的标题字段与不同的提升数字。例如:医生的头衔提升了3,而place的头衔提升了2。
如何实现这个查询?(我只想要请求正文)
发布于 2014-11-20 00:46:31
具体到用例,实现这一点的一种方法是使用function_score。
您匹配标题,并为每个单独的类型提供增强。示例查询应该是以下行中的内容:
{
"query" : {
"function_score" : {
"query" : {
"match" : {
"title" : "Lucky Jim"
}
},
"functions" : [
{
"filter": {
"type" : {
"value" : "doctor"
}
},
"boost_factor" : 3
},
{
"filter": {
"type" : {
"value" : "place"
}
},
"boost_factor" : 2
}
],
"score_mode": "first",
"boost_mode": "multiply"
}
}
}注意:对于elasticsearch 1.4及更高版本,根据文档boost_factor in functions已被弃用,应由weight取代。
https://stackoverflow.com/questions/27021932
复制相似问题