更新我还更新了映射以包含 pin ,如示例所示。此外,这是一个临时实例,其中包含一些数据:https://21991e47cdc7caa8000.qbox.io/profiles/lead/_search
我跟随instructions by ElasticSearch。使用此请求:
$.ajax({
url: 'https://21991e47cdc7caa8000.qbox.io/profiles/lead/_search',
method: 'GET',
data: {
sort: [{
_geo_distance: {
"pin.location": [49.8998, -97.1375],
order: "asc",
unit: "km"
}
}]
},
success: function(response) {
console.log(response);
}
});
不会以计算的distance
返回或按距离排序。我也尝试过使用"location"
。
这是我的映射:https://21991e47cdc7caa8000.qbox.io/profiles/lead/_mapping
有什么想法吗?
答案 0 :(得分:6)
我设法让它运转起来,请看差异,
我在查询之前将数据转换为json,并添加了一些配置(将dataType更改为json,并将请求类型更改为 POST ,因为我们知道GET请求通常没有正文,只有POST请求。
var request = {
sort: [{
_geo_distance: {
"pin.location": [
49.8998, -97.1375],
order: "asc",
unit: "km"
}
}]
};
$.ajax({
url: 'https://21991e47cdc7caa8000.qbox.io/profiles/lead/_search',
type: 'POST',
crossDomain: true,
dataType: 'json',
data: JSON.stringify(request),
success: function (response) {
console.log(JSON.stringify(response));
}
});
希望这会有所帮助。
我已经过测试,它也适合你。
答案 1 :(得分:0)
给出的示例使用的是pin.location
,而不是location
或lead.location
。
此外,pin.location
是一个长度为2的数组,而不是具有两个字段的对象,因为您正在使用它。这对我来说似乎非常违反直觉,因为大多数其他api调用中的location
字段是您正在使用的对象。
试试这个:
$.ajax({
url: "https://myhostedes.com/profiles/lead/_search",
method: "GET",
data: {
"sort": [{
"_geo_distance": {
"pin.location": [49.8998, -97.1375],
"order": "asc",
"unit": "km"
}
}]
},
success: function(response) {
console.log(response);
}
});
注意:目前我无法访问弹性测量实例,所以我还没有能够运行它。