diff --git a/src/adapter/elasticsearch.ts b/src/adapter/elasticsearch.ts index 8bf3e8745ec32725dd422f83009cd8b816f8465b..1750e15c5557cde64744d353acfdad95b424626e 100644 --- a/src/adapter/elasticsearch.ts +++ b/src/adapter/elasticsearch.ts @@ -54,13 +54,20 @@ export class ElasticsearchAdapter extends Adapter { let filter = {}; let match = []; + let nMatch = []; /** Query is used to define the filters */ if (view.clauses.length > 0) { for(let i=0;i<view.clauses[0].filters.length; i++) { - filter = {"match": { [view.clauses[0].filters[i].target.name]: view.clauses[0].filters[i].value }}; - match.push(filter); + if (view.clauses[0].filters[i].operator == 2) { + filter = {"match": { [view.clauses[0].filters[i].target.name]: view.clauses[0].filters[i].value }}; + nMatch.push(filter); + } else { + filter = {"match": { [view.clauses[0].filters[i].target.name]: view.clauses[0].filters[i].value }}; + match.push(filter); + } } Object.assign(query.query.bool, {must: match}); + Object.assign(query.query.bool, {must_not: nMatch}); } /** Aggregation is used to define the dimention and the aggregation */