From 3e79b86179ae129add19cc7b404eea2d849e6fa5 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 12 Dec 2022 22:09:25 +0800 Subject: [PATCH] Allow search recommendations with wildcard --- packages/api/src/elastic/pages.ts | 19 ++++++++++++++----- packages/api/src/elastic/types.ts | 5 ++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 315515a0b..b93406192 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -187,14 +187,23 @@ const appendIdsFilter = (body: SearchBody, ids: string[]): void => { } const appendRecommendedBy = (body: SearchBody, recommendedBy: string): void => { + const query = + recommendedBy === '*' + ? { + exists: { + field: 'recommendations', + }, + } + : { + term: { + 'recommendations.name': recommendedBy, + }, + } + body.query.bool.must.push({ nested: { path: 'recommendations', - query: { - term: { - 'recommendations.name': recommendedBy, - }, - }, + query, }, }) } diff --git a/packages/api/src/elastic/types.ts b/packages/api/src/elastic/types.ts index 070cf39ec..b27cef16d 100644 --- a/packages/api/src/elastic/types.ts +++ b/packages/api/src/elastic/types.ts @@ -55,7 +55,10 @@ export interface SearchBody { nested: { path: 'recommendations' query: { - term: { + exists?: { + field: string + } + term?: { 'recommendations.name': string } }