Skip to content

Commit 5f71648

Browse files
committed
Reduce number of terms for autocomplete and use single quote when building query.
1 parent ecca730 commit 5f71648

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

src/QueryBuilder/elastic.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type OrderByType = '_key' | '_term' | '_count'
1111
function getTermsAgg(
1212
fieldName: string,
1313
size: number,
14+
segment_size: number,
1415
orderBy: OrderByType = "_key",
1516
order: 'asc'|'desc' = 'asc'
1617
): BucketAggregation {
@@ -20,6 +21,7 @@ function getTermsAgg(
2021
field: fieldName,
2122
settings:{
2223
size: size.toString(),
24+
segment_size: segment_size.toString(),
2325
order: order,
2426
orderBy: orderBy,
2527
}
@@ -31,7 +33,8 @@ export function getDataQuery(queryDef: TermsQuery, refId: string): Elasticsearch
3133
{id:"count1", type:'count'}
3234
];
3335

34-
// Default behaviour is to order results by { _key: asc }
36+
// Default behaviour is to order results by { _key: asc } and get 100 terms,
37+
// segment_size is set to 100 to limit terms fetched by segment (by default it's 100 * 10).
3538
// queryDef.order allows selection of asc/desc
3639
// queryDef.orderBy allows selection of doc_count ordering (defaults desc)
3740

@@ -55,7 +58,7 @@ export function getDataQuery(queryDef: TermsQuery, refId: string): Elasticsearch
5558

5659
const bucketAggs: BucketAggregation[] = [];
5760
if (queryDef.field) {
58-
bucketAggs.push(getTermsAgg(queryDef.field, 500, orderBy, order))
61+
bucketAggs.push(getTermsAgg(queryDef.field, 100, 100, orderBy, order))
5962
}
6063

6164
return {

src/dataquery.gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export interface Terms extends BucketAggregationWithField {
7171
settings?: {
7272
order?: TermsOrder;
7373
size?: string;
74+
segment_size?: string;
7475
min_doc_count?: string;
7576
orderBy?: string;
7677
missing?: string;

src/datasource/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ export function useDatasourceFields(datasource: BaseQuickwitDataSource) {
2727
const getSuggestions = useCallback(async (word: string): Promise<Suggestion> => {
2828
let suggestions: Suggestion = { from: 0, options: [] };
2929

30-
const wordIsField = word.match(/([^:\s]+):"?([^"\s]*)"?/);
30+
const wordIsField = word.match(/([^:\s]+):'?([^'\s]*)'?/);
3131
if (wordIsField?.length) {
3232
const [_match, fieldName, _fieldValue] = wordIsField;
3333
const candidateValues = await datasource.getTagValues({ key: fieldName });
3434
suggestions.from = fieldName.length + 1; // Replace only the value part
3535
suggestions.options = candidateValues.map(v => ({
3636
type: 'text',
37-
label: typeof v.text === 'number' ? `${v.text}` : `"${v.text}"`
37+
label: typeof v.text === 'number' ? `${v.text}` : `'${v.text}'`
3838
}));
3939
} else {
4040
const candidateFields = fields;

src/utils/lucene.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export class LuceneQuery {
196196

197197
key = escapeFilter(key);
198198
value = escapeFilterValue(value);
199-
const filter = `${modifier}${key}:"${value}"`;
199+
const filter = `${modifier}${key}:'${value}'`;
200200

201201
return LuceneQuery.parse(concatenate(this.toString(), filter));
202202
}

0 commit comments

Comments
 (0)