Skip to content

Instantly share code, notes, and snippets.

@karthik20522
Created August 17, 2019 20:18
Show Gist options
  • Save karthik20522/ebf852b6c5726d58aa0e428cea954a2a to your computer and use it in GitHub Desktop.
Save karthik20522/ebf852b6c5726d58aa0e428cea954a2a to your computer and use it in GitHub Desktop.
es_scan.js
scanAndScroll: function(queryString, sourceFieldArray) {
var client = new $.es.Client({
hosts: 'http://search.es.io:9200'
});
var allRecords = [];
$("#exportProgressBarDiv").show();
client.search({
index: 'assets',
type: 'asset',
scroll: '30s',
body: {
_source: sourceFieldArray,
size: 100,
query: { query_string: { query: queryString } }
}
}, function getMoreUntilDone(error, response) {
response.hits.hits.forEach(function(hit) {
allRecords.push(DsaUtilities.flatten(hit._source));
});
var percentageCompletion = Math.floor((allRecords.length / response.hits.total) * 100);
$("#exportProgressBar").css({ width: percentageCompletion + "%" }).attr("aria-valuenow", percentageCompletion).text(percentageCompletion + "%");
if (response.hits.total !== allRecords.length) {
client.scroll({
scrollId: response._scroll_id,
scroll: '30s'
}, getMoreUntilDone);
} else {
var csvData = toCsv(allRecords);
var filename = "asset_export.csv";
var blob = new Blob([csvData], {
type: "text/plain;charset=utf-8"
});
saveAs(blob, filename);
}
});
},
toCsv: function(objArray) {
var headerNames = [],
csvList = [];
objArray.forEach(function(data) {
for (var elem in data) {
if ($.inArray(elem, headerNames) == -1) headerNames.push(elem);
}
});
csvList.push(headerNames.join(","));
objArray.forEach(function(data) {
var csvRow = [];
headerNames.forEach(function(header) {
if (!data[header] || data[header] === "undefined" || data[header] === null) csvRow.push("");
else {
var tempString = replaceAll(data[header].toString(), "\r\n", "");
csvRow.push(replaceAll(tempString, ",", ""));
}
});
csvList.push(csvRow.join(","));
});
return csvList.join("\n");
},
flatten: function(data) {
var result = {};
function recurse(cur, prop) {
if (Object(cur) !== cur) {
result[prop] = cur;
} else if (Array.isArray(cur)) {
for (var i = 0, l = cur.length; i < l; i++)
recurse(cur[i], prop + "[" + i + "]");
if (l == 0)
result[prop] = [];
} else {
var isEmpty = true;
for (var p in cur) {
isEmpty = false;
recurse(cur[p], prop ? prop + "." + p : p);
}
if (isEmpty)
result[prop] = {};
}
}
recurse(data, "");
return result;
},
replaceAll: function(text, search, replacement) {
return text.replace(new RegExp(search, 'g'), replacement);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment