我目前正在进行一项多重匹配和功能评分的混合查询.JSON的重要部分如下所示:
"function_score":{ "query":{ "query_string":{ "query":"some query", "fields":["id","name","strippedDescription","colourSearch","sizeSearch"] } } }
但是,我还希望包含不一定与查询匹配但具有大于0的特定数值的结果.我认为bool查询会执行此操作,但我不知道如何使用bool查询功能评分查询.
我知道多匹配查询只是bool查询的简写,我可以将多匹配查询扩展到它的bool对应部分,但是,我不知道如何在其中进行功能评分.
有任何想法吗?顺便说一句,我的版本是1.1.0.
弄清楚了!我错过了你可以在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" } } }