首页 > 解决方案 > 数据表 fnServerData 下的 ElasticSearch API

问题描述

我想从 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 得到了正确的响应,我认为附加数据时数据表结束时存在问题。

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

标签: elasticsearchdatatabledatatables

解决方案


推荐阅读