Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
case 'term':
if (Array.isArray(filter.values)) {
const filterVals = filter.values.map((item) => {
// Check that filter fields aren't empty.
if (item.length > 0) {
return item
}
})
// Match any terms.
esbResult = esbResult.filter(esb.termsQuery(filterName, filterVals))
// Match all terms.
// esbResult = esbResult.should(esb.termsQuery(filterName, filterVals))
// esbResult = esbResult.minimumShouldMatch(filterField.length)
} else {
let filterField = filter.values.slice()
esbResult = esbResult.filter(esb.termQuery(filterName, filterField))
}
break
case 'multiMatch':
esbResult = esbResult.must(esb.multiMatchQuery(filter.fields, filter.values))
break
case 'ids':
esbResult = esbResult.filter(esb.idsQuery(filter.fields, filter.values))
break
case 'integer':
esbResult = esbResult.filter(esb.rangeQuery(filterName)[operator](filter.values))
break
default:
}
}
getEsQueryBody: function (queryString, filters, fields, exclude) {
let esbResult = {}
if (queryString === false) {
esbResult = esb.boolQuery().must(esb.matchAllQuery())
} else if (exclude) {
let excludes = [
esb.termQuery('type', exclude.type)
]
if (exclude.field) {
excludes.push(esb.existsQuery(exclude.field))
}
esbResult = esb.boolQuery().must([
esb.multiMatchQuery(fields, queryString),
esb.boolQuery().mustNot(esb.boolQuery().must(excludes))
])
} else {
esbResult = esb.boolQuery().must(esb.multiMatchQuery(fields, queryString))
}
if (Object.keys(filters).length > 0) {
for (let filterName in filters) {
addFilter(esbResult, filters[filterName], filterName)
}