Skip to content

Commit

Permalink
Added IPv4RangeAggregation
Browse files Browse the repository at this point in the history
  • Loading branch information
mattweber committed Mar 17, 2014
1 parent a0a35df commit 4c3270f
Show file tree
Hide file tree
Showing 4 changed files with 417 additions and 5 deletions.
171 changes: 171 additions & 0 deletions dist/elastic.js
Original file line number Diff line number Diff line change
Expand Up @@ -4248,6 +4248,177 @@
});
};

/**
@class
<p>A dedicated range aggregation for IPv4 typed fields.</p>

<p>Note that this aggregration includes the from value and excludes the to
value for each range.</p>

@name ejs.IPv4RangeAggregation
@ejs aggregation
@borrows ejs.AggregationMixin.aggregation as aggregation
@borrows ejs.AggregationMixin.agg as agg
@borrows ejs.AggregationMixin._type as _type
@borrows ejs.AggregationMixin.toJSON as toJSON

@desc
<p>A dedicated range aggregation for IPv4 typed fields.</p>

@param {String} name The name which be used to refer to this aggregation.

*/
ejs.IPv4RangeAggregation = function (name) {

var
_common = ejs.AggregationMixin(name),
agg = _common.toJSON();

agg[name].ip_range = {};

return extend(_common, {

/**
<p>Sets the field to gather terms from.</p>

@member ejs.IPv4RangeAggregation
@param {String} field a valid field name..
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
field: function (field) {
if (field == null) {
return agg[name].ip_range.field;
}

agg[name].ip_range.field = field;
return this;
},

/**
Allows you generate or modify the terms using a script.

@member ejs.IPv4RangeAggregation
@param {String} scriptCode A valid script string to execute.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
script: function (scriptCode) {
if (scriptCode == null) {
return agg[name].ip_range.script;
}

agg[name].ip_range.script = scriptCode;
return this;
},

/**
The script language being used.

@member ejs.IPv4RangeAggregation
@param {String} language The language of the script.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
lang: function (language) {
if (language == null) {
return agg[name].ip_range.lang;
}

agg[name].ip_range.lang = language;
return this;
},

/**
Adds a range to the list of exsiting range expressions.

@member ejs.IPv4RangeAggregation
@param {String} from The start value, use null to ignore
@param {String} to The end value, use null to ignore.
@param {String} key Optional key/bucket name for keyed responses.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
range: function (from, to, mask, key) {
var rangeObj = {};
if (agg[name].ip_range.ranges == null) {
agg[name].ip_range.ranges = [];
}

if (from == null && to == null && mask == null) {
return agg[name].ip_range.ranges;
}

if (from != null) {
rangeObj.from = from;
}

if (to != null) {
rangeObj.to = to;
}

if (mask != null) {
rangeObj.mask = mask;
}

if (key != null) {
rangeObj.key = key;
}

agg[name].ip_range.ranges.push(rangeObj);
return this;
},

/**
Enable the response to be returned as a keyed object where the key is the
bucket interval.

@member ejs.IPv4RangeAggregation
@param {Boolean} trueFalse to enable keyed response or not
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
keyed: function (trueFalse) {
if (trueFalse == null) {
return agg[name].ip_range.keyed;
}

agg[name].ip_range.keyed = trueFalse;
return this;
},

/**
Set to true to assume script values are sorted.

@member ejs.IPv4RangeAggregation
@param {Boolean} trueFalse assume sorted values or not
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
scriptValuesSorted: function (trueFalse) {
if (trueFalse == null) {
return agg[name].ip_range.script_values_sorted;
}

agg[name].ip_range.script_values_sorted = trueFalse;
return this;
},

/**
Sets parameters that will be applied to the script. Overwrites
any existing params.

@member ejs.IPv4RangeAggregation
@param {Object} p An object where the keys are the parameter name and
values are the parameter value.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
params: function (p) {
if (p == null) {
return agg[name].ip_range.params;
}

agg[name].ip_range.params = p;
return this;
}

});
};

/**
@class
<p>A single-value metrics aggregation that keeps track and returns the
Expand Down
8 changes: 4 additions & 4 deletions dist/elastic.min.js

Large diffs are not rendered by default.

170 changes: 170 additions & 0 deletions src/aggregations/IPv4RangeAggregation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
/**
@class
<p>A dedicated range aggregation for IPv4 typed fields.</p>
<p>Note that this aggregration includes the from value and excludes the to
value for each range.</p>
@name ejs.IPv4RangeAggregation
@ejs aggregation
@borrows ejs.AggregationMixin.aggregation as aggregation
@borrows ejs.AggregationMixin.agg as agg
@borrows ejs.AggregationMixin._type as _type
@borrows ejs.AggregationMixin.toJSON as toJSON
@desc
<p>A dedicated range aggregation for IPv4 typed fields.</p>
@param {String} name The name which be used to refer to this aggregation.
*/
ejs.IPv4RangeAggregation = function (name) {

var
_common = ejs.AggregationMixin(name),
agg = _common.toJSON();

agg[name].ip_range = {};

return extend(_common, {

/**
<p>Sets the field to gather terms from.</p>
@member ejs.IPv4RangeAggregation
@param {String} field a valid field name..
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
field: function (field) {
if (field == null) {
return agg[name].ip_range.field;
}

agg[name].ip_range.field = field;
return this;
},

/**
Allows you generate or modify the terms using a script.
@member ejs.IPv4RangeAggregation
@param {String} scriptCode A valid script string to execute.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
script: function (scriptCode) {
if (scriptCode == null) {
return agg[name].ip_range.script;
}

agg[name].ip_range.script = scriptCode;
return this;
},

/**
The script language being used.
@member ejs.IPv4RangeAggregation
@param {String} language The language of the script.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
lang: function (language) {
if (language == null) {
return agg[name].ip_range.lang;
}

agg[name].ip_range.lang = language;
return this;
},

/**
Adds a range to the list of exsiting range expressions.
@member ejs.IPv4RangeAggregation
@param {String} from The start value, use null to ignore
@param {String} to The end value, use null to ignore.
@param {String} key Optional key/bucket name for keyed responses.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
range: function (from, to, mask, key) {
var rangeObj = {};
if (agg[name].ip_range.ranges == null) {
agg[name].ip_range.ranges = [];
}

if (from == null && to == null && mask == null) {
return agg[name].ip_range.ranges;
}

if (from != null) {
rangeObj.from = from;
}

if (to != null) {
rangeObj.to = to;
}

if (mask != null) {
rangeObj.mask = mask;
}

if (key != null) {
rangeObj.key = key;
}

agg[name].ip_range.ranges.push(rangeObj);
return this;
},

/**
Enable the response to be returned as a keyed object where the key is the
bucket interval.
@member ejs.IPv4RangeAggregation
@param {Boolean} trueFalse to enable keyed response or not
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
keyed: function (trueFalse) {
if (trueFalse == null) {
return agg[name].ip_range.keyed;
}

agg[name].ip_range.keyed = trueFalse;
return this;
},

/**
Set to true to assume script values are sorted.
@member ejs.IPv4RangeAggregation
@param {Boolean} trueFalse assume sorted values or not
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
scriptValuesSorted: function (trueFalse) {
if (trueFalse == null) {
return agg[name].ip_range.script_values_sorted;
}

agg[name].ip_range.script_values_sorted = trueFalse;
return this;
},

/**
Sets parameters that will be applied to the script. Overwrites
any existing params.
@member ejs.IPv4RangeAggregation
@param {Object} p An object where the keys are the parameter name and
values are the parameter value.
@returns {Object} returns <code>this</code> so that calls can be chained.
*/
params: function (p) {
if (p == null) {
return agg[name].ip_range.params;
}

agg[name].ip_range.params = p;
return this;
}

});
};
Loading

0 comments on commit 4c3270f

Please sign in to comment.