gpt4 book ai didi

jquery - 使用jQuery/Ajax进行Elasticsearch查询

转载 作者:行者123 更新时间:2023-12-03 00:14:00 25 4
gpt4 key购买 nike

今天,我对ElasticSearch和jQuery有问题。我一直在寻找解决方案,但没有找到解决方案。

我想使用jQuery从ElasticSearch中获取一些数据。当我改用curl时,它可以工作:

curl -XGET "http://localhost:9200/locations/_search?pretty=true" -d '
{
"sort": [
"_score",
{
"_geo_distance": {
"location": {
"lat" : 40.715,
"lon": -73.998
},
"order": "asc",
"unit": "km",
"distance_type": "plane"
}
}
]
}'

但是当我使用jQuery时它不起作用。我试过了:
var data = {
"query": {
"filtered": {
"filter": {
"geo_distance": {
"distance": "1km",
"location": {
"lat" : 40.715,
"lon": -73.998
}
}
}
}
}
}

$.ajax({
method: "GET",
url: "http://localhost:9200/locations/_search?pretty=true",
crossDomain: true,
async: false,
data: data,
dataType : 'json',
contentType: 'application/json',
})
.done(function( data ) {
console.log(data);
})
.fail(function( data ) {
console.log(data);
});

我试图用JSON.stringify(data)传递数据,但它也无法正常工作。我什至尝试将方法从“GET”更改为“POST”,但没有结果。好吧,它正在工作。 ElasticSearch返回带有某些位置的响应,但是我的位置与我请求的位置相距很远。 40.715,-73.998的位置是纽约,当我使用curl时,它将返回纽约的位置,但是当我使用jQuery时,我会在墨西哥得到位置,因此我认为我的“数据”变量被忽略了。我提到我尝试使用json.Stringify。是的,但是返回错误:
Object { readyState: 0, getResponseHeader: .ajax/y.getResponseHeader(), getAllResponseHeaders: .ajax/y.getAllResponseHeaders(), setRequestHeader: .ajax/y.setRequestHeader(), overrideMimeType: .ajax/y.overrideMimeType(), statusCode: .ajax/y.statusCode(), abort: .ajax/y.abort(), state: .Deferred/e.state(), always: .Deferred/e.always(), catch: .Deferred/e.catch(),… }

那么,如何使其工作呢?

最佳答案

好的,问题解决了。我的代码还可以。我将方法更改为“POST”。使用Google Chrome开发人员工具,我注意到代码的另一部分效果不好。用我的代码

"location": { 
"lat" : 40.715,
"lon": -73.998
}

lat和lon是变量(我将其更改为StackOverflow问题的坐标)wchich为空,因为我代码的另一部分无法从getCurrentPosition()分配新值(默认值为0,这就是为什么我的代码没有这样做的原因)工作)。因此,正确的代码版本是:
var data = {
"query": {
"filtered": {
"filter": {
"geo_distance": {
"distance": "1km",
"location": {
"lat" : lat,
"lon": lon
}
}
}
}
}
}

$.ajax({
method: "GET",
url: "http://localhost:9200/locations/_search?pretty=true",
crossDomain: true,
async: false,
data: JSON.stringify(data),
dataType : 'json',
contentType: 'application/json',
})
.done(function( data ) {
console.log(data);
})
.fail(function( data ) {
console.log(data);
});

注意,lat和lon是变量,需要将参数作为地理位置

关于jquery - 使用jQuery/Ajax进行Elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38324167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com