我想从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那里得到了正确的答复,我认为在追加数据时,数据表端存在问题。
任何想法我在这里做错了。