From 5a73ced225d848b2cd77bd1b458e1c62b073455e Mon Sep 17 00:00:00 2001 From: Rufus Pollock Date: Mon, 2 Apr 2012 21:05:56 +0100 Subject: [PATCH] [#66,filters,elasticsearch][s]: elasticsearch support for filters (addTermFilter on Query). --- src/backend/elasticsearch.js | 13 +++++++++++++ test/backend.elasticsearch.test.js | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/src/backend/elasticsearch.js b/src/backend/elasticsearch.js index c2e9331e..ed571fea 100644 --- a/src/backend/elasticsearch.js +++ b/src/backend/elasticsearch.js @@ -79,6 +79,19 @@ this.recline.Backend = this.recline.Backend || {}; } delete out.q; } + // now do filters (note the *plural*) + if (out.filters && out.filters.length) { + if (!out.filter) { + out.filter = {} + } + if (!out.filter.and) { + out.filter.and = []; + } + out.filter.and = out.filter.and.concat(out.filters); + } + if (out.filters != undefined) { + delete out.filters; + } return out; }, query: function(model, queryObj) { diff --git a/test/backend.elasticsearch.test.js b/test/backend.elasticsearch.test.js index 4fc931cb..9af34e2d 100644 --- a/test/backend.elasticsearch.test.js +++ b/test/backend.elasticsearch.test.js @@ -20,6 +20,12 @@ test("ElasticSearch queryNormalize", function() { in_.q = 'abc'; var out = backend._normalizeQuery(in_); equal(out.query.query_string.query, 'abc'); + + var in_ = new recline.Model.Query(); + in_.addTermFilter('xyz', 'XXX'); + in_ = in_.toJSON(); + var out = backend._normalizeQuery(in_); + deepEqual(out.filter.and[0], {term: { xyz: 'XXX'}}); }); var mapping_data = {