我的数据存储在 SSH 服务器上,我想通过 HTTP POST 和 GET 请求查询和检索数据。我一直尝试使用简单的 URL 来做到这一点http://127.0.0.1:9200/_search?但它给了我一个空的响应。通过 http 在 ssh 服务器上发送请求的正确方法是什么?我的 http post 函数如下所示:
function spatialsearch(coordinates_selected) {
var coords = coordinates_selected.geometry.coordinates;
console.log('c',JSON.stringify(coordinates_selected.geometry.coordinates));
var _url = 'http://127.0.0.1:9200/_search?';
var b = {
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_shape": {
"metadata.o2r.spatial.geometry": {
"shape": {
"type": "polygon",
"coordinates":
coords
/* [
// [-22.0, 76.0],
// [-27.0, 65.0],
// [-57.0, 65.0],
// [-59.0, 76.0],
// [-22.0, 76.0]
]*/
},
"relation": "within"
}}}}}
};
console.log(b,'http sending request');
return $http.post(_url,b);
}
我尝试使用 ssh -L9201:sshserver:9200 r_chau02@sshserver 进行 SSH 隧道传输,但仍然没有收到任何响应。
更新 我将代码中的端口更新为 9201,但结果仍然相同。控制台中的错误是净::ERR_EMPTY_RESPONSE当终端生成通道 3:打开失败:连接失败:连接被拒绝。
答案1
您看的方向正确,但有一个小错误。HTTP 请求和转发端口不匹配(9200 和 9201)。
您可以更新代码以在端口 9201 上查询,或者将 ssh 隧道更改为:
ssh -L9201:127.0.0.1:9200 r_chau02@sshserver
这将使 ES 在 localhost:9200 上可用(假设服务器上启用了隧道,并且 ES 正在监听 sshserver 地址)。