aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/src/app/data/metaData.js
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/src/app/data/metaData.js')
-rw-r--r--sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/src/app/data/metaData.js187
1 files changed, 0 insertions, 187 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/src/app/data/metaData.js b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/src/app/data/metaData.js
deleted file mode 100644
index 03bc7f0d1..000000000
--- a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/src/app/data/metaData.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/**
- * Copyright 2010-2013 Ben Birch
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this software 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.
- */
-(function( app ) {
-
- /*
- notes on elasticsearch terminology used in this project
-
- indices[index] contains one or more
- types[type] contains one or more
- documents contain one or more
- paths[path]
- each path contains one element of data
- each path maps to one field
-
- eg PUT, "/twitter/tweet/1"
- {
- user: "mobz",
- date: "2011-01-01",
- message: "You know, for browsing elasticsearch",
- name: {
- first: "Ben",
- last: "Birch"
- }
- }
-
- creates
- 1 index: twitter
- this is the collection of index data
- 1 type: tweet
- this is the type of document (kind of like a table in sql)
- 1 document: /twitter/tweet/1
- this is an actual document in the index ( kind of like a row in sql)
- 5 paths: [ ["user"], ["date"], ["message"], ["name","first"], ["name","last"] ]
- since documents can be heirarchical this maps a path from a document root to a piece of data
- 5 fields: [ "user", "date", "message", "first", "last" ]
- this is an indexed 'column' of data. fields are not heirarchical
-
- the relationship between a path and a field is called a mapping. mappings also contain a wealth of information about how es indexes the field
-
- notes
- 1) a path is stored as an array, the dpath is <index> . <type> . path.join("."),
- which can be considered the canonical reference for a mapping
- 2) confusingly, es uses the term index for both the collection of indexed data, and the individually indexed fields
- so the term index_name is the same as field_name in this sense.
-
- */
-
- var data = app.ns("data");
- var ux = app.ns("ux");
-
- var coretype_map = {
- "string" : "string",
- "keyword" : "string",
- "text" : "string",
- "byte" : "number",
- "short" : "number",
- "long" : "number",
- "integer" : "number",
- "float" : "number",
- "double" : "number",
- "ip" : "number",
- "date" : "date",
- "boolean" : "boolean",
- "binary" : "binary",
- "multi_field" : "multi_field"
- };
-
- var default_property_map = {
- "string" : { "store" : "no", "index" : "analysed" },
- "number" : { "store" : "no", "precision_steps" : 4 },
- "date" : { "store" : "no", "format" : "dateOptionalTime", "index": "yes", "precision_steps": 4 },
- "boolean" : { "store" : "no", "index": "yes" },
- "binary" : { },
- "multi_field" : { }
- };
-
- // parses metatdata from a cluster, into a bunch of useful data structures
- data.MetaData = ux.Observable.extend({
- defaults: {
- state: null // (required) response from a /_cluster/state request
- },
- init: function() {
- this._super();
- this.refresh(this.config.state);
- },
- getIndices: function(alias) {
- return alias ? this.aliases[alias] : this.indicesList;
- },
- // returns an array of strings containing all types that are in all of the indices passed in, or all types
- getTypes: function(indices) {
- var indices = indices || [], types = [];
- this.typesList.forEach(function(type) {
- for(var i = 0; i < indices.length; i++) {
- if(! this.indices[indices[i]].types.contains(type))
- return;
- }
- types.push(type);
- }, this);
- return types;
- },
- refresh: function(state) {
- // currently metadata expects all like named fields to have the same type, even when from different types and indices
- var aliases = this.aliases = {};
- var indices = this.indices = {};
- var types = this.types = {};
- var fields = this.fields = {};
- var paths = this.paths = {};
-
- function createField( mapping, index, type, path, name ) {
- var dpath = [ index, type ].concat( path ).join( "." );
- var field_name = mapping.index_name || path.join( "." );
- var field = paths[ dpath ] = fields[ field_name ] || $.extend({
- field_name : field_name,
- core_type : coretype_map[ mapping.type ],
- dpaths : []
- }, default_property_map[ coretype_map[ mapping.type ] ], mapping );
-
- if (field.type === "multi_field" && typeof field.fields !== "undefined") {
- for (var subField in field.fields) {
- field.fields[ subField ] = createField( field.fields[ subField ], index, type, path.concat( subField ), name + "." + subField );
- }
- }
- if (fields.dpaths) {
- field.dpaths.push(dpath);
- }
- return field;
- }
- function getFields(properties, type, index, listeners) {
- (function procPath(prop, path) {
- for (var n in prop) {
- if ("properties" in prop[n]) {
- procPath( prop[ n ].properties, path.concat( n ) );
- } else {
- var field = createField(prop[n], index, type, path.concat(n), n);
- listeners.forEach( function( listener ) {
- listener[ field.field_name ] = field;
- } );
- }
- }
- })(properties, []);
- }
- for (var index in state.metadata.indices) {
- indices[index] = {
- types : [], fields : {}, paths : {}, parents : {}
- };
- indices[index].aliases = state.metadata.indices[index].aliases;
- indices[index].aliases.forEach(function(alias) {
- (aliases[alias] || (aliases[alias] = [])).push(index);
- });
- var mapping = state.metadata.indices[index].mappings;
- for (var type in mapping) {
- indices[index].types.push(type);
- if ( type in types) {
- types[type].indices.push(index);
- } else {
- types[type] = {
- indices : [index], fields : {}
- };
- }
- getFields(mapping[type].properties, type, index, [fields, types[type].fields, indices[index].fields]);
- if ( typeof mapping[type]._parent !== "undefined") {
- indices[index].parents[type] = mapping[type]._parent.type;
- }
- }
- }
-
- this.aliasesList = Object.keys(aliases);
- this.indicesList = Object.keys(indices);
- this.typesList = Object.keys(types);
- this.fieldsList = Object.keys(fields);
- }
- });
-
-})( this.app );