elasticlink 0.2.1-beta → 0.3.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -163
- package/dist/aggregation.builder.d.ts +4 -2
- package/dist/aggregation.builder.d.ts.map +1 -1
- package/dist/aggregation.builder.js +1 -1
- package/dist/aggregation.types.d.ts +15 -14
- package/dist/aggregation.types.d.ts.map +1 -1
- package/dist/bulk.builder.d.ts +115 -1
- package/dist/bulk.builder.d.ts.map +1 -1
- package/dist/bulk.builder.js +1 -1
- package/dist/field.helpers.d.ts +39 -44
- package/dist/field.helpers.d.ts.map +1 -1
- package/dist/field.helpers.js +15 -19
- package/dist/field.types.d.ts +35 -5
- package/dist/field.types.d.ts.map +1 -1
- package/dist/field.types.js +3 -3
- package/dist/index-management.builder.d.ts +5 -12
- package/dist/index-management.builder.d.ts.map +1 -1
- package/dist/index-management.builder.js +10 -32
- package/dist/index-management.types.d.ts +10 -64
- package/dist/index-management.types.d.ts.map +1 -1
- package/dist/index-management.types.js +0 -1
- package/dist/index.d.ts +16 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -8
- package/dist/mapping.builder.d.ts +24 -0
- package/dist/mapping.builder.d.ts.map +1 -0
- package/dist/mapping.builder.js +23 -0
- package/dist/mapping.types.d.ts +82 -0
- package/dist/mapping.types.d.ts.map +1 -0
- package/dist/mapping.types.js +6 -0
- package/dist/multi-search.builder.d.ts +5 -3
- package/dist/multi-search.builder.d.ts.map +1 -1
- package/dist/multi-search.builder.js +2 -2
- package/dist/multi-search.types.d.ts +7 -6
- package/dist/multi-search.types.d.ts.map +1 -1
- package/dist/query.builder.d.ts +3 -7
- package/dist/query.builder.d.ts.map +1 -1
- package/dist/query.builder.js +30 -92
- package/dist/query.types.d.ts +85 -235
- package/dist/query.types.d.ts.map +1 -1
- package/dist/query.types.js +2 -1
- package/dist/suggester.builder.d.ts +5 -3
- package/dist/suggester.builder.d.ts.map +1 -1
- package/dist/suggester.builder.js +2 -2
- package/dist/suggester.types.d.ts +5 -4
- package/dist/suggester.types.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/__tests__/aggregation-builder.test.d.ts +0 -2
- package/dist/__tests__/aggregation-builder.test.d.ts.map +0 -1
- package/dist/__tests__/aggregation-builder.test.js +0 -662
- package/dist/__tests__/bulk.test.d.ts +0 -2
- package/dist/__tests__/bulk.test.d.ts.map +0 -1
- package/dist/__tests__/bulk.test.js +0 -684
- package/dist/__tests__/examples.test.d.ts +0 -2
- package/dist/__tests__/examples.test.d.ts.map +0 -1
- package/dist/__tests__/examples.test.js +0 -2006
- package/dist/__tests__/fixtures/finance.d.ts +0 -26
- package/dist/__tests__/fixtures/finance.d.ts.map +0 -1
- package/dist/__tests__/fixtures/finance.js +0 -32
- package/dist/__tests__/fixtures/legal.d.ts +0 -8
- package/dist/__tests__/fixtures/legal.d.ts.map +0 -1
- package/dist/__tests__/fixtures/legal.js +0 -20
- package/dist/__tests__/fixtures/real-estate.d.ts +0 -19
- package/dist/__tests__/fixtures/real-estate.d.ts.map +0 -1
- package/dist/__tests__/fixtures/real-estate.js +0 -20
- package/dist/__tests__/index-management.test.d.ts +0 -2
- package/dist/__tests__/index-management.test.d.ts.map +0 -1
- package/dist/__tests__/index-management.test.js +0 -1148
- package/dist/__tests__/integration/aggregation.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/aggregation.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/aggregation.integration.test.js +0 -200
- package/dist/__tests__/integration/bulk.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/bulk.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/bulk.integration.test.js +0 -93
- package/dist/__tests__/integration/fixtures/finance.d.ts +0 -17
- package/dist/__tests__/integration/fixtures/finance.d.ts.map +0 -1
- package/dist/__tests__/integration/fixtures/finance.js +0 -42
- package/dist/__tests__/integration/fixtures/legal.d.ts +0 -21
- package/dist/__tests__/integration/fixtures/legal.d.ts.map +0 -1
- package/dist/__tests__/integration/fixtures/legal.js +0 -52
- package/dist/__tests__/integration/fixtures/real-estate.d.ts +0 -7
- package/dist/__tests__/integration/fixtures/real-estate.d.ts.map +0 -1
- package/dist/__tests__/integration/fixtures/real-estate.js +0 -22
- package/dist/__tests__/integration/helpers.d.ts +0 -15
- package/dist/__tests__/integration/helpers.d.ts.map +0 -1
- package/dist/__tests__/integration/helpers.js +0 -21
- package/dist/__tests__/integration/index-management.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/index-management.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/index-management.integration.test.js +0 -79
- package/dist/__tests__/integration/multi-search.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/multi-search.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/multi-search.integration.test.js +0 -55
- package/dist/__tests__/integration/query.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/query.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/query.integration.test.js +0 -118
- package/dist/__tests__/integration/suggester.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/suggester.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/suggester.integration.test.js +0 -48
- package/dist/__tests__/multi-search.test.d.ts +0 -2
- package/dist/__tests__/multi-search.test.d.ts.map +0 -1
- package/dist/__tests__/multi-search.test.js +0 -336
- package/dist/__tests__/query-builder.test.d.ts +0 -2
- package/dist/__tests__/query-builder.test.d.ts.map +0 -1
- package/dist/__tests__/query-builder.test.js +0 -5624
- package/dist/__tests__/suggester.test.d.ts +0 -2
- package/dist/__tests__/suggester.test.d.ts.map +0 -1
- package/dist/__tests__/suggester.test.js +0 -1001
package/dist/query.builder.js
CHANGED
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { createAggregationBuilder } from './aggregation.builder.js';
|
|
6
6
|
import { createSuggesterBuilder } from './suggester.builder.js';
|
|
7
|
-
/**
|
|
8
|
-
* Creates a clause builder for constructing query clauses
|
|
9
|
-
* Used within bool query contexts (must, should, filter, must_not)
|
|
10
|
-
*/
|
|
11
7
|
const createClauseBuilder = () => ({
|
|
12
8
|
matchAll: () => ({ match_all: {} }),
|
|
13
9
|
match: (field, value, options) => {
|
|
@@ -60,11 +56,7 @@ const createClauseBuilder = () => ({
|
|
|
60
56
|
const { source, lang = 'painless', params, boost } = options;
|
|
61
57
|
return {
|
|
62
58
|
script: {
|
|
63
|
-
script: {
|
|
64
|
-
source,
|
|
65
|
-
lang,
|
|
66
|
-
...(params ? { params } : {})
|
|
67
|
-
},
|
|
59
|
+
script: { source, lang, ...(params ? { params } : {}) },
|
|
68
60
|
...(boost ? { boost } : {})
|
|
69
61
|
}
|
|
70
62
|
};
|
|
@@ -76,18 +68,10 @@ const createClauseBuilder = () => ({
|
|
|
76
68
|
return elseFn ? elseFn(createClauseBuilder()) : undefined;
|
|
77
69
|
}
|
|
78
70
|
});
|
|
79
|
-
/** Shared clause builder instance */
|
|
80
|
-
const clauseBuilder = createClauseBuilder();
|
|
81
|
-
/**
|
|
82
|
-
* Creates a query builder with immutable state
|
|
83
|
-
* @param state - Current query state (optional)
|
|
84
|
-
* @returns QueryBuilder instance with fluent API
|
|
85
|
-
*/
|
|
86
71
|
export const createQueryBuilder = (state = {}) => ({
|
|
87
|
-
// Boolean query methods
|
|
88
72
|
bool: () => createQueryBuilder({ ...state, query: { bool: {} } }),
|
|
89
73
|
must: (builderFn) => {
|
|
90
|
-
const clause = builderFn(
|
|
74
|
+
const clause = builderFn(createClauseBuilder());
|
|
91
75
|
const existing = state.query?.bool?.must || [];
|
|
92
76
|
return createQueryBuilder({
|
|
93
77
|
...state,
|
|
@@ -95,7 +79,7 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
95
79
|
});
|
|
96
80
|
},
|
|
97
81
|
mustNot: (builderFn) => {
|
|
98
|
-
const clause = builderFn(
|
|
82
|
+
const clause = builderFn(createClauseBuilder());
|
|
99
83
|
const existing = state.query?.bool?.must_not || [];
|
|
100
84
|
return createQueryBuilder({
|
|
101
85
|
...state,
|
|
@@ -103,7 +87,7 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
103
87
|
});
|
|
104
88
|
},
|
|
105
89
|
should: (builderFn) => {
|
|
106
|
-
const clause = builderFn(
|
|
90
|
+
const clause = builderFn(createClauseBuilder());
|
|
107
91
|
const existing = state.query?.bool?.should || [];
|
|
108
92
|
return createQueryBuilder({
|
|
109
93
|
...state,
|
|
@@ -111,20 +95,17 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
111
95
|
});
|
|
112
96
|
},
|
|
113
97
|
filter: (builderFn) => {
|
|
114
|
-
const clause = builderFn(
|
|
98
|
+
const clause = builderFn(createClauseBuilder());
|
|
115
99
|
const existing = state.query?.bool?.filter || [];
|
|
116
100
|
return createQueryBuilder({
|
|
117
101
|
...state,
|
|
118
102
|
query: { bool: { ...state.query.bool, filter: [...existing, clause] } }
|
|
119
103
|
});
|
|
120
104
|
},
|
|
121
|
-
minimumShouldMatch: (value) => {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
},
|
|
127
|
-
// Full-text query methods
|
|
105
|
+
minimumShouldMatch: (value) => createQueryBuilder({
|
|
106
|
+
...state,
|
|
107
|
+
query: { bool: { ...state.query.bool, minimum_should_match: value } }
|
|
108
|
+
}),
|
|
128
109
|
matchAll: () => createQueryBuilder({ ...state, query: { match_all: {} } }),
|
|
129
110
|
match: (field, value, options) => {
|
|
130
111
|
if (!options || Object.keys(options).length === 0) {
|
|
@@ -150,8 +131,6 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
150
131
|
query: { multi_match: { fields, query, ...options } }
|
|
151
132
|
});
|
|
152
133
|
},
|
|
153
|
-
// Term-level query methods
|
|
154
|
-
term: (field, value) => createQueryBuilder({ ...state, query: { term: { [field]: value } } }),
|
|
155
134
|
matchPhrase: (field, value) => createQueryBuilder({
|
|
156
135
|
...state,
|
|
157
136
|
query: { match_phrase: { [field]: value } }
|
|
@@ -168,7 +147,12 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
168
147
|
query: { match_phrase_prefix: { [field]: { query: value, ...options } } }
|
|
169
148
|
});
|
|
170
149
|
},
|
|
171
|
-
|
|
150
|
+
term: (field, value) => createQueryBuilder({ ...state, query: { term: { [field]: value } } }),
|
|
151
|
+
terms: (field, values) => createQueryBuilder({ ...state, query: { terms: { [field]: values } } }),
|
|
152
|
+
range: (field, conditions) => createQueryBuilder({
|
|
153
|
+
...state,
|
|
154
|
+
query: { range: { [field]: conditions } }
|
|
155
|
+
}),
|
|
172
156
|
exists: (field) => createQueryBuilder({ ...state, query: { exists: { field } } }),
|
|
173
157
|
prefix: (field, value) => createQueryBuilder({ ...state, query: { prefix: { [field]: value } } }),
|
|
174
158
|
wildcard: (field, value) => createQueryBuilder({
|
|
@@ -187,11 +171,7 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
187
171
|
query: { fuzzy: { [field]: { value, ...options } } }
|
|
188
172
|
});
|
|
189
173
|
},
|
|
190
|
-
ids: (values) => createQueryBuilder({
|
|
191
|
-
...state,
|
|
192
|
-
query: { ids: { values } }
|
|
193
|
-
}),
|
|
194
|
-
// Nested query
|
|
174
|
+
ids: (values) => createQueryBuilder({ ...state, query: { ids: { values } } }),
|
|
195
175
|
nested: (path, fn, options) => {
|
|
196
176
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
197
177
|
const nestedQuery = fn(createClauseBuilder());
|
|
@@ -206,7 +186,6 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
206
186
|
}
|
|
207
187
|
});
|
|
208
188
|
},
|
|
209
|
-
// Vector search
|
|
210
189
|
knn: (field, queryVector, options) => {
|
|
211
190
|
const { k, num_candidates, filter, boost, similarity } = options;
|
|
212
191
|
return createQueryBuilder({
|
|
@@ -222,36 +201,27 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
222
201
|
}
|
|
223
202
|
});
|
|
224
203
|
},
|
|
225
|
-
// Script queries
|
|
226
204
|
script: (options) => {
|
|
227
205
|
const { source, lang = 'painless', params, boost } = options;
|
|
228
206
|
return createQueryBuilder({
|
|
229
207
|
...state,
|
|
230
208
|
query: {
|
|
231
209
|
script: {
|
|
232
|
-
script: {
|
|
233
|
-
source,
|
|
234
|
-
lang,
|
|
235
|
-
...(params ? { params } : {})
|
|
236
|
-
},
|
|
210
|
+
script: { source, lang, ...(params ? { params } : {}) },
|
|
237
211
|
...(boost ? { boost } : {})
|
|
238
212
|
}
|
|
239
213
|
}
|
|
240
214
|
});
|
|
241
215
|
},
|
|
242
216
|
scriptScore: (queryFn, script, options) => {
|
|
243
|
-
const innerQuery = queryFn(
|
|
217
|
+
const innerQuery = queryFn(createClauseBuilder());
|
|
244
218
|
const { source, lang = 'painless', params } = script;
|
|
245
219
|
return createQueryBuilder({
|
|
246
220
|
...state,
|
|
247
221
|
query: {
|
|
248
222
|
script_score: {
|
|
249
223
|
query: innerQuery,
|
|
250
|
-
script: {
|
|
251
|
-
source,
|
|
252
|
-
lang,
|
|
253
|
-
...(params ? { params } : {})
|
|
254
|
-
},
|
|
224
|
+
script: { source, lang, ...(params ? { params } : {}) },
|
|
255
225
|
...(options?.min_score !== undefined
|
|
256
226
|
? { min_score: options.min_score }
|
|
257
227
|
: {}),
|
|
@@ -260,47 +230,30 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
260
230
|
}
|
|
261
231
|
});
|
|
262
232
|
},
|
|
263
|
-
percolate: (options) => {
|
|
264
|
-
return createQueryBuilder({
|
|
265
|
-
...state,
|
|
266
|
-
query: {
|
|
267
|
-
percolate: {
|
|
268
|
-
...options
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
},
|
|
273
|
-
// Conditional building
|
|
233
|
+
percolate: (options) => createQueryBuilder({ ...state, query: { percolate: { ...options } } }),
|
|
274
234
|
when: (condition, thenFn, elseFn) => {
|
|
275
235
|
if (condition) {
|
|
276
236
|
return thenFn(createQueryBuilder(state));
|
|
277
237
|
}
|
|
278
238
|
return elseFn ? elseFn(createQueryBuilder(state)) : undefined;
|
|
279
239
|
},
|
|
280
|
-
range: (field, conditions) => createQueryBuilder({ ...state, query: { range: { [field]: conditions } } }),
|
|
281
|
-
// Sorting
|
|
282
240
|
sort: (field, direction = 'asc') => {
|
|
283
241
|
const existing = state.sort || [];
|
|
284
242
|
return createQueryBuilder({
|
|
285
243
|
...state,
|
|
286
|
-
sort: [
|
|
287
|
-
...existing,
|
|
288
|
-
{ [field]: direction }
|
|
289
|
-
]
|
|
244
|
+
sort: [...existing, { [field]: direction }]
|
|
290
245
|
});
|
|
291
246
|
},
|
|
292
|
-
// Pagination and source filtering
|
|
293
247
|
from: (from) => createQueryBuilder({ ...state, from }),
|
|
294
248
|
size: (size) => createQueryBuilder({ ...state, size }),
|
|
295
249
|
_source: (_source) => createQueryBuilder({ ...state, _source }),
|
|
296
|
-
// Query parameters
|
|
297
250
|
timeout: (timeout) => createQueryBuilder({ ...state, timeout }),
|
|
298
251
|
trackScores: (track_scores) => createQueryBuilder({ ...state, track_scores }),
|
|
299
252
|
explain: (explain) => createQueryBuilder({ ...state, explain }),
|
|
300
253
|
minScore: (min_score) => createQueryBuilder({ ...state, min_score }),
|
|
301
254
|
version: (version) => createQueryBuilder({ ...state, version }),
|
|
302
255
|
seqNoPrimaryTerm: (seq_no_primary_term) => createQueryBuilder({ ...state, seq_no_primary_term }),
|
|
303
|
-
trackTotalHits: (track_total_hits) => createQueryBuilder({ ...state, track_total_hits }),
|
|
256
|
+
trackTotalHits: (track_total_hits = true) => createQueryBuilder({ ...state, track_total_hits }),
|
|
304
257
|
highlight: (fields, options) => {
|
|
305
258
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
306
259
|
const highlightFields = {};
|
|
@@ -318,33 +271,18 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
318
271
|
}
|
|
319
272
|
});
|
|
320
273
|
},
|
|
321
|
-
// Geo queries
|
|
322
274
|
geoDistance: (field, center, options) => createQueryBuilder({
|
|
323
275
|
...state,
|
|
324
|
-
query: {
|
|
325
|
-
geo_distance: {
|
|
326
|
-
[String(field)]: center,
|
|
327
|
-
...options
|
|
328
|
-
}
|
|
329
|
-
}
|
|
276
|
+
query: { geo_distance: { [String(field)]: center, ...options } }
|
|
330
277
|
}),
|
|
331
278
|
geoBoundingBox: (field, options) => createQueryBuilder({
|
|
332
279
|
...state,
|
|
333
|
-
query: {
|
|
334
|
-
geo_bounding_box: {
|
|
335
|
-
[String(field)]: options
|
|
336
|
-
}
|
|
337
|
-
}
|
|
280
|
+
query: { geo_bounding_box: { [String(field)]: options } }
|
|
338
281
|
}),
|
|
339
282
|
geoPolygon: (field, options) => createQueryBuilder({
|
|
340
283
|
...state,
|
|
341
|
-
query: {
|
|
342
|
-
geo_polygon: {
|
|
343
|
-
[String(field)]: options
|
|
344
|
-
}
|
|
345
|
-
}
|
|
284
|
+
query: { geo_polygon: { [String(field)]: options } }
|
|
346
285
|
}),
|
|
347
|
-
// Pattern and scoring queries
|
|
348
286
|
regexp: (field, value, options) => {
|
|
349
287
|
if (!options || Object.keys(options).length === 0) {
|
|
350
288
|
return createQueryBuilder({
|
|
@@ -358,7 +296,7 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
358
296
|
});
|
|
359
297
|
},
|
|
360
298
|
constantScore: (fn, options) => {
|
|
361
|
-
const clause = fn(
|
|
299
|
+
const clause = fn(createClauseBuilder());
|
|
362
300
|
return createQueryBuilder({
|
|
363
301
|
...state,
|
|
364
302
|
query: {
|
|
@@ -369,19 +307,19 @@ export const createQueryBuilder = (state = {}) => ({
|
|
|
369
307
|
}
|
|
370
308
|
});
|
|
371
309
|
},
|
|
372
|
-
// Aggregations
|
|
373
310
|
aggs: (fn) => {
|
|
374
311
|
const aggBuilder = createAggregationBuilder();
|
|
375
312
|
const builtAggs = fn(aggBuilder).build();
|
|
376
313
|
return createQueryBuilder({ ...state, aggs: builtAggs });
|
|
377
314
|
},
|
|
378
|
-
// Suggestions
|
|
379
315
|
suggest: (fn) => {
|
|
380
316
|
const suggesterBuilder = createSuggesterBuilder();
|
|
381
317
|
const builtSuggestions = fn(suggesterBuilder).build();
|
|
382
|
-
return createQueryBuilder({
|
|
318
|
+
return createQueryBuilder({
|
|
319
|
+
...state,
|
|
320
|
+
suggest: builtSuggestions.suggest
|
|
321
|
+
});
|
|
383
322
|
},
|
|
384
|
-
// Build final query
|
|
385
323
|
build: () => {
|
|
386
324
|
const { _includeQuery, ...rest } = state;
|
|
387
325
|
if (_includeQuery === false) {
|