赞
踩
elasticsearch version: 7.10.1
在Elasticsearch中,gauss作为衰减函数(decay function)被用于function_score查询中,用于实现基于地理位置或其他数值字段的衰减权重评分。gauss衰减函数模拟了高斯分布,即距离中心点越近的文档,其得分越高;随着距离增大,得分按照高斯分布规律衰减。
GET /your_index/_search { "query": { "function_score": { "query": { // 基础查询,可以是任何有效的Elasticsearch查询 "match_all": {} }, "functions": [ { "gauss": { // 距离衰减字段,这里假设是location "location": { // 中心点坐标 "origin": "51.5074, -0.1278", // 伦敦市中心经纬度 // 高斯衰减的标准化差(sigma),影响衰减速度 "scale": "10km", // 单位可以是千米、米等 // 斜率因子(offset),影响衰减起点 "offset": "0km", // 缩放因子(decay),影响衰减陡峭程度 "decay": 0.5 } } } ] } } }
gauss的案例
假设我们有一个商店索引,其中包含地理位置信息,并且我们希望根据顾客位置对其附近的商店进行优先排序
PUT /shops
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"location": {
"type": "geo_point"
}
}
}
}
POST /shops/_doc { "name": "Shop A", "location": "51.5074,-0.1278" // 伦敦大本钟坐标 } POST /shops/_doc { "name": "Shop B", "location": "48.8566,2.3522" // 巴黎埃菲尔铁塔坐标 } POST /shops/_doc { "name": "Shop C", "location": "40.7128,-74.0060" // 纽约时代广场坐标 } POST /shops/_doc { "name": "Shop D", "location": "37.7749,-122.4194" // 旧金山金门大桥坐标 } POST /shops/_doc { "name": "Shop E", "location": "-33.8521,151.2111" // 悉尼歌剧院坐标 } POST /shops/_doc { "name": "Shop F", "location": "55.7507,37.6173" // 莫斯科红场坐标 } POST /shops/_doc { "name": "Shop G", "location": "35.6895,139.6917" // 东京晴空塔坐标 } POST /shops/_doc { "name": "Shop H", "location": "-23.5505,-46.6333" // 圣保罗独立公园坐标 }
GET /shops/_search { "query": { "function_score": { "query": { "match_all": {} // 这里仅作示例,实际应用中应替换为更具针对性的查询条件 }, "functions": [ { "gauss": { "location": { "origin": "51.5074,-0.1278", // 用户所在位置坐标 "scale": "10km", // 衰减半径为10公里 "offset": "0km", // 衰减起始位置为零 "decay": 0.5 // 衰减指数 } } } ], "score_mode": "multiply", // 各项得分的组合方式 "boost_mode": "replace" // 得分替换还是累加 } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。