From b2c115f9d9f13df465edec8c3322f0699cd3617f Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 21 Apr 2023 17:10:46 +0800 Subject: [PATCH 1/2] Allow wildcards in label: filter --- packages/api/src/elastic/pages.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 06bf472bb..1d2262867 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -119,8 +119,25 @@ const appendIncludeLabelFilter = ( builder = builder.query('nested', { path: 'labels', query: { - terms: { - 'labels.name': filter.labels, + bool: { + should: filter.labels.map((label) => { + if (label.includes('*')) { + // Wildcard query + return { + wildcard: { + 'labels.name': { + value: label, + }, + }, + } + } + return { + term: { + 'labels.name': label, + }, + } + }), + minimum_should_match: 1, }, }, }) From b57ccd06165c8efdf9f35b3a0d760ec2a2e52498 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 21 Apr 2023 17:39:04 +0800 Subject: [PATCH 2/2] Allow wildcards in query filter --- packages/api/src/elastic/pages.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 1d2262867..8b39cf200 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -27,10 +27,24 @@ import { } from './types' const appendQuery = (builder: ESBuilder, query: string): ESBuilder => { + const fields = ['title', 'content', 'author', 'description', 'siteName'] + if (query.includes('*')) { + // wildcard query + fields.forEach((field) => { + builder = builder.orQuery('wildcard', { + [field]: { + value: query, + case_insensitive: true, + }, + }) + }) + return builder.queryMinimumShouldMatch(1) + } + return builder .orQuery('multi_match', { query, - fields: ['title', 'content', 'author', 'description', 'siteName'], + fields, operator: 'and', type: 'cross_fields', })