我将通过三个以下参数来运行查询,这些参数是;
根据以上参数,我会根据items
分数查询query
列表,然后计算result
和lat, lon
之间的距离。
现在,我有以下脚本来根据items
和query
获取distance
;
{
"query": {
"function_score": {
"query": {
"bool": {
"must": [{
"multi_match" : {
"query": "Lippo",
"fields": [ "name^6", "city^5", "country^4", "position^3", "address_line^2", "description"]
}
}]
}
},
"functions": [
{
"gauss": {
"position": {
"origin": "-6.184652, 106.7518749",
"offset": "2km",
"scale": "10km",
"decay": 0.33
}
}
}
]
}
}
}
但问题是,如果query
为空,则根本没有结果。我想要的是,结果基于query
或distance
。
反正有没有实现这个目标?任何建议都表示赞赏。
答案 0 :(得分:2)
将多重匹配的zero_terms_query选项设置为all
可以让您在查询为空时获得结果。
示例:
{
"query": {
"function_score": {
"query": {
"bool": {
"must": [{
"multi_match" : {
"query": "Lippo",
"fields": [ "name^6", "city^5", "country^4", "position^3", "address_line^2", "description"],
"zero_terms_query" : "all"
}
}]
}
},
"functions": [
{
"gauss": {
"position": {
"origin": "-6.184652, 106.7518749",
"offset": "2km",
"scale": "10km",
"decay": 0.33
}
}
}
]
}
}
}