我有3种类型:[place, doctor, article]
其中每种类型都有一个名为title
的字段。 article
类型有一个名为body
的额外字段。我想匹配这3种类型标题字段的查询与不同的提升数字。例如:医生的头衔增加3,而地方的头衔增加2。
如何实现此查询?(我只想要请求体)
答案 0 :(得分:1)
特定于用例的一种方法是使用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 的注意事项已弃用,应替换为的 重量 强>