Javascript 使用Elasticsearch的Ajax查询格式
我正在尝试使用AJAX向我的elasticsearch索引发出post请求。 结果是:Javascript 使用Elasticsearch的Ajax查询格式,javascript,jquery,ajax,curl,
elasticsearch,Javascript,Jquery,Ajax,Curl,
elasticsearch,我正在尝试使用AJAX向我的elasticsearch索引发出post请求。 结果是: [~]$ curl -XGET 'http://localhost:9200/firebase/_search?q=song:i%20am%20in' {"took":172,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":2,"max_score":0.82749283,"hits":[{"
[~]$ curl -XGET 'http://localhost:9200/firebase/_search?q=song:i%20am%20in'
{"took":172,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":2,"max_score":0.82749283,"hits":[{"_index":"firebase","_type":"song","_id":"0001","_score":0.82749283,"_source":{"song":"i am in california","song_name":"hello","song_url":"https://s3.ap-south-1.amazonaws.com/songapp-dump/media/songs/Adele_-_Hello-_i_am_in_california.mp3"}},{"_index":"firebase","_type":"song","_id":"0002","_score":0.28582606,"_source":{"song":"i must have called a thousand times","song_name":"hello","song_url":"https://s3.ap-south-1.amazonaws.com/songapp-dump/media/songs/Adele_-_Hello-_i_must_have_called_a_thousand_times.mp3"}}]}}
浏览器的结果是:这也可以正常工作。这意味着索引已经创建,cURL/GET能够得到结果
当我试图让AJAX请求执行相同的操作时,我可能正在努力处理查询格式。我搞不懂
Ajax.js
$(function() {
$('#message').keyup(function() {
// console.log(JSON.stringify());
var data = {
'song': $('#message').val()
};
console.log(JSON.stringify(data));
$.ajax({
type: "POST",
url: "http://localhost:9200/firebase/_search",
contentType: 'application/json',
// data: {
// 'q': $('#message').val()
// },
data: JSON.stringify(data),
success: searchSuccess,
dataType: 'jsonp'
});
});
});
控制台记录以下错误:
基本上这是一个400错误的请求错误。我无法确定我的查询或Ajax请求的创建方式是否有问题。为什么我有回调问题!任何帮助都将不胜感激。我在网上搜索过这个问题,也尝试过各种组合 将方法更改为
GET
,将日期类型更改为json
。查询字符串还需要一个q
参数
var data = {
'q': 'song:' + $('#message').val()
};
$.ajax({
type: "GET",
url: "http://localhost:9200/firebase/_search",
contentType: 'application/json',
data: JSON.stringify(data),
success: searchSuccess,
dataType: 'json'
});
我会告诉你一件事,伙计,这是我有史以来最快得到完美答案的一次。改为GET,从q开始,完成!我想简单地解释一下哪里出了问题。正如我从其他帖子中读到的,GET/POST在这里并不重要。跨源请求需要“jsonp”。这些又有什么关系呢?只有当您调用的源不支持跨源请求时,才需要JSONP……这基本上是一种黑客行为。你可以阅读更多。elasticseach文档说要使用和你卷曲的例子一样好,所以我甚至不用看文档。啊,当然。只要它能完成任务。谢谢