我正在尝试构建一个返回配置文件列表及其相关分数的查询。完整查询由许多子查询组成。
每个子查询都会询问个人资料,例如“是人数”等问题。 50' 。我想要以下行为
然后我想取所有子查询分数的平均值来给我查询分数。显然,如果存在任何查询字段且超出范围,则不会返回。
我尝试这样做的方法是使用功能评分查询。这是一系列失败尝试的最后一次迭代:(。
返回正确的配置文件;但是得分始终为1.如果员工人数在范围内并且营业额不存在(比方说),我希望得分为0.5。
任何帮助都会受到如此多的赞赏,
谢谢,
帕斯卡。
POST /api_test/_search
{
"query": {
"function_score": {
"functions": [
{
"filter": {
"range": {
"companyProps.headcount": {
"lte": "1000",
"gte": "5"
}
}
},
"weight": 1
},
{
"filter": {
"missing": {
"field": "companyProps.headcount"
}
},
"weight": 0
},
{
"filter": {
"range": {
"companyProps.turnover": {
"lte": "1000",
"gte": "100"
}
}
},
"weight": 1
},
{
"filter": {
"missing": {
"field": "companyProps.turnover"
}
},
"weight": 0
}
],
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"range": {
"companyProps.headcount": {
"lte": "1000",
"gte": "5"
}
}
},
{
"missing": {
"field": "companyProps.headcount"
}
}
]
}
},
{
"bool": {
"should": [
{
"range": {
"companyProps.turnover": {
"lte": "1000",
"gte": "100"
}
}
},
{
"missing": {
"field": "companyProps.turnover"
}
}
]
}
}
]
}
}
}
},
"score_mode": "avg"
}
}
}