数据表 AJAX POST 被弹性拒绝:预期 [START_OBJECT] 但找到 [VALUE_STRING]

Datatables AJAX POST rejected by elastic: Expected [START_OBJECT] but found [VALUE_STRING]

提问人:Reddy SK 提问时间:11/11/2022 最后编辑:Reddy SK 更新时间:11/11/2022 访问量:66

问:

我正在尝试修复与 mu 本地弹性实例的连接,但在尝试使用服务器端调用时仍然出现各种错误。

经过各种尝试,我遇到了“预期 [START_OBJECT] 但发现 [VALUE_STRING]”的情况。

试图通过互联网找到原因和解决方案,但没有成功。

这是我的代码。

<script>
$(document).ready(function () {
    var query = '{ "query" : { "match_all" : {} } }';
    console.log (query);
    query = JSON.stringify(query);
    console.log (query);
        
    $('#integrations').DataTable( {
            "processing": true,
            "serverSide": true,
      "ajax": {
                "url": "http://localhost:9200/integrations-prod/_search?size=1000&source_content_type=application/json",
                //WORKS EVEN WITH GET BUT NOT AS SERVERSIDE "url": `http://czchown5029751.prg-dc.dhl.com:9200/integrations-prod/_search?size=1000&source_content_type=application/json&source=${query}`,
                //WORKS EVEN WITH GET BUT NOT AS SERVERSIDE "url": `http://czchown5029751.prg-dc.dhl.com:9200/integrations-prod/_search?size=10000`,
                data : function ( d ) {
                return query;
            },
                "contentType": "application/json",
                //"cache": "false",
        "type": "POST",
        //"jsonp": "true",
        "dataType": "json",
        "dataSrc": "hits.hits",
            "columnDefs": [ { "defaultContent": "-", "targets": "_all" } ]
            },
            "columns": [
            { "data": "_source.name" },
            { "data": "_source.description" },
            { "data": "_source.valid" },
            { "data": "_source.status_id" },
            { "data": "_source.region_id" },
            { "data": "_source.validated_time" }
        ]
    } )
}); 
</script>
ajax elasticsearch datatables 服务器端

评论

0赞 andrewJames 11/12/2022
不是答案,只是一个观察:当您使用 时,这意味着 DataTable 在用户每次执行搜索、排序或分页操作时都会向服务器发送数据。此数据允许服务器使用正确的结果页进行响应。但是,如果你想在 中添加你自己的数据来发送到服务器,那么你就不能覆盖 的内容(这是我上面提到的指令 - 使用语句查看它包含的内容)。"serverSide": truedata : function ( d ) { return query; }dconsole.log( d )
0赞 andrewJames 11/12/2022
相反,如果需要,可以将额外的数据添加到 中。您可以在 ajax.data 的文档中查看示例。或者,也许您故意想忽略所有用户搜索/排序/分页操作?queryd
0赞 Reddy SK 11/14/2022
@andrewJames,我正在尝试将查询内容添加到已发布的有效负载中。当然希望保留潜在的搜索或排序命令。
0赞 Reddy SK 11/14/2022
@andrewJames,不知何故它开始工作,但现在即使我会得到 0 条记录,我也会得到 0 到 0 个条目(从 NaN 总条目中过滤出来)。奇怪。在网上搜索解决方案
0赞 andrewJames 11/14/2022
您是否熟悉选择使用时会发生什么?您告诉 DataTables,您(您的服务器)将处理所有排序、过滤和分页逻辑。DataTables 将不再为您执行任何操作。这包括传达要在消息中显示的正确值。请查看文档,其中通过示例进行了描述。"serverSide": trueShowing 0 to 0 of 0 entries (filtered from NaN total entries)

答: 暂无答案