我目前正在进行一项多重匹配和功能评分的混合查询.JSON的重要部分如下所示:
"function_score":{
"query":{
"query_string":{
"query":"some query",
"fields":["id","name","strippedDescription","colourSearch","sizeSearch"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我还希望包含不一定与查询匹配但具有大于0的特定数值的结果.我认为bool查询会执行此操作,但我不知道如何使用bool查询功能评分查询.
我知道多匹配查询只是bool查询的简写,我可以将多匹配查询扩展到它的bool对应部分,但是,我不知道如何在其中进行功能评分.
有任何想法吗?顺便说一句,我的版本是1.1.0.
Gar*_*ing 27
弄清楚了!我错过了你可以在bool查询中嵌套多字段查询的事实!我的最终解决方案如下:
{
"query":{
"function_score":{
"query":{
"bool":{
"should": [
{
"range": {
"allBoost": {
"gt": 0
}
}
},{
"multi_match":{
"query":"some search query",
"fields":[
"id",
"name",
"description",
"category"
]
}
}
]
}
},
"functions":[
{
"filter":{
"range": {
"allBoost": {
"gt": 0
}
}
},
"script_score":{
"script":"doc['allBoost'].value"
}
},
{
"filter":{
"range": {
"allBoost": {
"lte": 0
}
}
},
"script_score":{
"script":"_score"
}
}
],
"boost_mode": "replace"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12706 次 |
| 最近记录: |