feat(elasticsearch): fields are fetch from mapping instead of docs, you can enter custom value in field options, other fixes, #1034

This commit is contained in:
Torkel Ödegaard
2015-09-05 19:55:58 +02:00
parent f942ec952e
commit 52eeefa6d9
6 changed files with 22 additions and 43 deletions

View File

@@ -257,43 +257,19 @@ function (angular, _, config, kbn, moment, ElasticQueryBuilder) {
var timeFrom = this.translateTime(timeSrv.time.from);
var timeTo = this.translateTime(timeSrv.time.to);
var query = {
size: 10,
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": timeFrom,
"lte": timeTo
}
}
}
],
}
}
}
}
};
return this._post('/_search?', query).then(function(res) {
return this._get('/_mapping').then(function(res) {
var fields = {};
for (var i = 0; i < res.hits.hits.length; i++) {
var hit = res.hits.hits[i];
for (var field in hit) {
if (hit.hasOwnProperty(field) && field[0] !== '_') {
fields[field] = 1;
}
}
if (hit._source) {
for (var fieldProp in hit._source) {
if (hit._source.hasOwnProperty(fieldProp)) {
fields[fieldProp] = 1;
for (var indexName in res) {
var index = res[indexName];
var mappings = index.mappings;
if (!mappings) { continue; }
for (var typeName in mappings) {
var properties = mappings[typeName].properties;
for (var field in properties) {
var prop = properties[field];
if (prop.type && field[0] !== '_') {
fields[field] = prop;
}
}
}