javascript - 使用 Elasticsearch 的 Ajax 查询格式

标签 javascript jquery ajax curl elasticsearch

我正在尝试使用 AJAX 向我的 elasticsearch 索引发出发布请求。 cURL 结果是:

[~]$ 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"}}]}} 

浏览器结果是:enter image description here这也工作正常。表示索引已创建,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'
        });

    });

});

控制台记录以下错误: enter image description here

基本上这是一个 400 Bad Request 错误。我无法确定我的查询或创建 Ajax 请求的方式是否有问题。为什么我遇到回调问题!任何帮助,将不胜感激。我在网上搜索了这个问题,并尝试了各种组合。

最佳答案

将方法更改为 GET,将 dateType 更改为 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'
    });

关于javascript - 使用 Elasticsearch 的 Ajax 查询格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608208/

相关文章:

javascript - Ajax 值到 Controller 方法

javascript - 显示标签和布局的 Bootstrap 问题

php - 通过 AJAX 更新数据库中的变量

javascript - 表单提交后可能的 HTTP 请求状态

javascript - 如何使用 javascript 通过验证 cookie 存储值和 ajax 响应来尝试 3 次登录表单

javascript - Sweetalert 延迟弹出窗口打开

javascript - JavaScript 中的微秒计时

javascript - 在页脚停止固定位置

jquery - 如何创建一个可以更改时间的 setinterval 实例?

javascript - 等待 jquery 中 getJSON 的回调完成