【发布时间】:2016-03-30 18:20:26
【问题描述】:
我已将用户的纬度/经度作为 Elasticsearch 中文档的字段之一编入索引。现在,最初的要求是按输入距离对用户进行排序,为此,我使用了以下排序:
"sort": [
{
"_geo_distance": {
"user.location": {
"lat": 39,
"lon": -83
},
"order": "asc",
"distance_type" : "plane"
}
}
]
但是,现在要求已更改,我们已将用户的办公代码添加到索引中。对于其中少数代码,距离是使用 Google 的行驶距离 API(目前在 Elasticsearch 中无法实现)计算的,并且在对用户进行排序时,必须考虑这些行驶距离,而不是 Elasticsearch 计算的距离。
其中一个替代方法是将 user.officecode 的地图和行驶距离作为参数传递给脚本,并在执行距离英里计算之前查找此地图。如果用户的 user.officecode 存在于地图中,则返回它的值,否则继续进行 Elasticsearch 距离计算。
我的问题是,应该以什么格式传入地图。如何在外部构建地图并将其设置为参数。
我正在使用 Elasticsearch 1.7 并使用 Transport Client 连接到 Elasticsearch 集群。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
标签: elasticsearch groovy params