Skip to content

Commit

Permalink
Merge pull request #112 from bharathkontham/master
Browse files Browse the repository at this point in the history
Fixed include and limit filter issues for ElasticSearch 6
  • Loading branch information
bharathkontham authored Mar 8, 2018
2 parents 930d278 + cab4ac6 commit ec0f6d8
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 15 deletions.
20 changes: 17 additions & 3 deletions lib/esConnector.js
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,18 @@ ESConnector.prototype.buildFilter = function(modelName, idName, criteria, size,
but the test which should fail until I implement such a feature ... is actually passing!
... did someone at some point of time implement an in-memory filter for FIELDS
in the underlying loopback-connector implementation? */

// Elasticsearch _source filtering code
/*if (Array.isArray(criteria.fields) || typeof criteria.fields === "string") {
filter.body._source = criteria.fields;
} else if (typeof criteria.fields === "object" && Object.keys(criteria.fields).length > 0) {
filter.body._source.includes = _.map(_.pickBy(criteria.fields, function(v, k) {
return v === true;
}), function(v, k) { return k; });
filter.body._source.excludes = _.map(_.pickBy(criteria.fields, function(v, k) {
return v === false;
}), function(v, k) { return k; });
}*/
}
if (criteria.order) {
log('ESConnector.prototype.buildFilter', 'will delegate sorting to buildOrder()');
Expand All @@ -437,9 +449,7 @@ ESConnector.prototype.buildFilter = function(modelName, idName, criteria, size,
}
if (criteria.where) {
filter.body.query = self.buildWhere(modelName, idName, criteria.where).query;
}
// TODO: Include filter
else if (criteria.suggests) { // TODO: remove HACK!!!
} else if (criteria.suggests) { // TODO: remove HACK!!!
if (self.settings.apiVersion.indexOf('5') === 0) {
filter.body = {
suggest: criteria.suggests
Expand Down Expand Up @@ -468,6 +478,10 @@ ESConnector.prototype.buildFilter = function(modelName, idName, criteria, size,
}
}
};
}
// For 'limit' and 'include filters'
else if (criteria.limit || criteria.include) {
filter.body.query = self.buildWhere(modelName, idName, criteria.where || {}).query;
}
}

Expand Down
22 changes: 11 additions & 11 deletions lib/setupMapping.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,18 @@ var setupMapping = function(mappingType) {

//return self.setupIndices(defaults.index)
return self.setupIndex(defaults.index)
.then(function() {
log('ESConnector.prototype.setupMapping', 'db.indices.putMapping', 'mappingType:', mappingType, 'start');
return db.indices.putMapping(_.defaults({ body: mapping }, defaults))
.then(function(body) {
log('ESConnector.prototype.setupMapping', 'db.indices.putMapping', 'mappingType:', mappingType, 'response', body);
return Promise.resolve();
}, function(err) {
log('ESConnector.prototype.setupMapping', 'db.indices.putMapping', 'mappingType:', mappingType, 'failed', err);
//console.trace(err.message);
return Promise.reject(err);
.then(function() {
log('ESConnector.prototype.setupMapping', 'db.indices.putMapping', 'mappingType:', mappingType, 'start');
return db.indices.putMapping(_.defaults({ body: mapping }, defaults))
.then(function(body) {
log('ESConnector.prototype.setupMapping', 'db.indices.putMapping', 'mappingType:', mappingType, 'response', body);
return Promise.resolve();
}, function(err) {
log('ESConnector.prototype.setupMapping', 'db.indices.putMapping', 'mappingType:', mappingType, 'failed', err);
//console.trace(err.message);
return Promise.reject(err);
});
});
});
};

module.exports = function(dependencies) {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "loopback-connector-esv6",
"version": "1.0.2",
"version": "1.0.3",
"description": "LoopBack Connector for Elasticsearch 6.x",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit ec0f6d8

Please sign in to comment.