blob: 54c2c5a840204009758e8b9abbeb8f6654b8ee88 [file] [log] [blame]
#!/usr/bin/env node
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* fetch.js
* A small utility to fetch records from Elasticsearch and save as JSON
*
*/
var http = require('http')
, fs = require('fs')
, _ = require('lodash');
var options = {
host: process.env.ES_HOST || 'localhost',
port: 9200
};
var size = 1000;
var fields = [ '_source' ];
// indices to pull test data from
var indices = [
'sourcefire',
'qosmos',
'qradar',
'fireeye',
'bro-201405050800'
];
var retrieve = function (index, i) {
options.path =
'/' + index + '/_search?size=' + size + '&fields=' + fields.join(',');
http.get(options, function (response) {
var data = [];
response.on('data', function (chunk) {
data.push(chunk);
});
response.on('end', function () {
var filePath = 'seed/es/' + index + '.json'
, results = _.pluck(JSON.parse(data.join('')).hits.hits, '_source');
var output = results.map(function (v) {
return JSON.stringify(v);
});
// ES-friendly bulk format
var fmt = "{\"index\": { \"_index\": \"" + index +
"\", \"_type\": \"" + index + "\"}}\n";
var toWrite = fmt + output.join("\n" + fmt) + "\n";
fs.writeFile(filePath, toWrite, function (err) {
if (err) {
throw err;
}
});
});
});
};
indices.forEach(retrieve);