数据表fnServerData下的ElasticSearch API

时间:2019-02-04 08:14:04

标签: elasticsearch datatable datatables

我想从elasticsearch js api填充数据表数据。为此,我有这样的代码。

        var oTable = $('#myTable').dataTable({
            columns: [
                { title: "Title" }
            ],
            'bProcessing': true,
            'bServerSide': true,
            "bPaginate": true,
            "bSort": false,
            "asStripeClasses": [],
            "fnServerParams": function (aoData) {
                aoData.push(
                    {"name":"search", "value": $('#title_search').val()},
                );
            },
            'fnServerData': function (sSource, aoData, fnCallback) {
                var searchval,sortval,sortorder;
                aoData.map(function(i) {
                    var search = i.name;
                    if(search =='search') {
                        searchval = i.value;
                    }

                });
                /*Query ElasticSearch */
                client.search({
                        index: indexname,
                        type: indextype,
                        from: 0,
                        size: 10,
                        body: {
                            query: {
                                "query_string": {
                                    "query": searchval + '*',
                                    "fields": ["title", "number"]
                                }
                            }
                        }
                    }, function (error, response) {
                        fnCallback(response);
                    });

            }

        });

我能够从上述调用中获取结果。但是,当我尝试在数据表中搜索时,结果将附加到每个字母搜索中。

function search(e) {
      otTable.fnDraw();
 }

例如,我尝试搜索London。当我键入L时,它将附加所有以字母L开头的结果,而当我键入O时,它将再次附加以Lo开头的所有结果。

我从ES那里得到了正确的答复,我认为在追加数据时,数据表端存在问题。

任何想法我在这里做错了。

0 个答案:

没有答案