以下是我的索引
的示例文档{
"name" : "Neil Buckinson",
"insuranceType" : "personal",
"premiumAmount": 4000,
"age": 36
}
我想提供比其他文件高出3500到4500优先级的文件。我怎么能在elasticsearch中做到这一点?
答案 0 :(得分:1)
这很简单。只需使用Bool Query并在should
子句中添加条件。
bool
查询采用更多匹配更好的方法,因此得分 从每个匹配的must
或should
子句将被添加到一起 为每个文档提供最终_score
。
GET /index/_search
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"should": [
{
"range": {
"premiumAmount": {
"gte": 3500,
"lte": 4500
},
"boost": 2
}
}
]
}
}
}
只需将当前查询放在must
子句中,而不是match_all
。
should
表示此条件是可选的,但如果它符合您的条件,则会提升您的文档
这就是你正在寻找的东西。
答案 1 :(得分:1)
我想说更好的方法是使用过滤函数的函数得分查询 -
{
"query": {
"function_score": {
"functions": [
{
"weight": 100,
"filter": {
"range": {
"premiumAmount": {
"gte": 3500,
"lte": 4500
}
}
}
}
]
}
}
}