Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Elasticsearch的Ajax查询格式_Javascript_Jquery_Ajax_Curl_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Javascript,Jquery,Ajax,Curl,elasticsearch" /> elasticsearch,Javascript,Jquery,Ajax,Curl,elasticsearch" />

Javascript 使用Elasticsearch的Ajax查询格式

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":[{"

我正在尝试使用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":[{"_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文档说要使用和你卷曲的例子一样好,所以我甚至不用看文档。啊,当然。只要它能完成任务。谢谢