elasticsearch 弹性搜索如何查询多匹配或函数
我将传递以下三个参数来运行查询,它们是:
elasticsearch 弹性搜索如何查询多匹配或函数,
elasticsearch,
elasticsearch,我将传递以下三个参数来运行查询,它们是: 查询-地名、描述或空 lat-一个地方的纬度或空 lon-一个地方的经度或空的经度 基于以上参数,我根据query得分得到项目的查询列表,然后计算结果与纬度、经度之间的距离 现在,我有了下面的脚本来基于查询和距离获取项 { "query": { "function_score": { "query": { "bool": { "mu
- 查询-地名、描述或空
- lat-一个地方的纬度或空
- lon-一个地方的经度或空的经度
query
得分得到项目的查询列表,然后计算结果
与纬度、经度
之间的距离
现在,我有了下面的脚本来基于查询和距离获取项
{
"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
为空,则根本不会有结果。我想要的是,结果基于查询
或距离
有没有办法做到这一点?任何建议都将不胜感激。将multi-match选项设置为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
}
}
}
]
}
}
}
这对我来说已经够了。。但是,我最终删除了函数来检查距离。我最终使用了简单的查询
和过滤器
。谢谢你,你也可以发布这个版本。