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.
Files changed (107) hide show
  1. package/README.md +162 -163
  2. package/dist/aggregation.builder.d.ts +4 -2
  3. package/dist/aggregation.builder.d.ts.map +1 -1
  4. package/dist/aggregation.builder.js +1 -1
  5. package/dist/aggregation.types.d.ts +15 -14
  6. package/dist/aggregation.types.d.ts.map +1 -1
  7. package/dist/bulk.builder.d.ts +115 -1
  8. package/dist/bulk.builder.d.ts.map +1 -1
  9. package/dist/bulk.builder.js +1 -1
  10. package/dist/field.helpers.d.ts +39 -44
  11. package/dist/field.helpers.d.ts.map +1 -1
  12. package/dist/field.helpers.js +15 -19
  13. package/dist/field.types.d.ts +35 -5
  14. package/dist/field.types.d.ts.map +1 -1
  15. package/dist/field.types.js +3 -3
  16. package/dist/index-management.builder.d.ts +5 -12
  17. package/dist/index-management.builder.d.ts.map +1 -1
  18. package/dist/index-management.builder.js +10 -32
  19. package/dist/index-management.types.d.ts +10 -64
  20. package/dist/index-management.types.d.ts.map +1 -1
  21. package/dist/index-management.types.js +0 -1
  22. package/dist/index.d.ts +16 -12
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +10 -8
  25. package/dist/mapping.builder.d.ts +24 -0
  26. package/dist/mapping.builder.d.ts.map +1 -0
  27. package/dist/mapping.builder.js +23 -0
  28. package/dist/mapping.types.d.ts +82 -0
  29. package/dist/mapping.types.d.ts.map +1 -0
  30. package/dist/mapping.types.js +6 -0
  31. package/dist/multi-search.builder.d.ts +5 -3
  32. package/dist/multi-search.builder.d.ts.map +1 -1
  33. package/dist/multi-search.builder.js +2 -2
  34. package/dist/multi-search.types.d.ts +7 -6
  35. package/dist/multi-search.types.d.ts.map +1 -1
  36. package/dist/query.builder.d.ts +3 -7
  37. package/dist/query.builder.d.ts.map +1 -1
  38. package/dist/query.builder.js +30 -92
  39. package/dist/query.types.d.ts +85 -235
  40. package/dist/query.types.d.ts.map +1 -1
  41. package/dist/query.types.js +2 -1
  42. package/dist/suggester.builder.d.ts +5 -3
  43. package/dist/suggester.builder.d.ts.map +1 -1
  44. package/dist/suggester.builder.js +2 -2
  45. package/dist/suggester.types.d.ts +5 -4
  46. package/dist/suggester.types.d.ts.map +1 -1
  47. package/package.json +7 -7
  48. package/dist/__tests__/aggregation-builder.test.d.ts +0 -2
  49. package/dist/__tests__/aggregation-builder.test.d.ts.map +0 -1
  50. package/dist/__tests__/aggregation-builder.test.js +0 -662
  51. package/dist/__tests__/bulk.test.d.ts +0 -2
  52. package/dist/__tests__/bulk.test.d.ts.map +0 -1
  53. package/dist/__tests__/bulk.test.js +0 -684
  54. package/dist/__tests__/examples.test.d.ts +0 -2
  55. package/dist/__tests__/examples.test.d.ts.map +0 -1
  56. package/dist/__tests__/examples.test.js +0 -2006
  57. package/dist/__tests__/fixtures/finance.d.ts +0 -26
  58. package/dist/__tests__/fixtures/finance.d.ts.map +0 -1
  59. package/dist/__tests__/fixtures/finance.js +0 -32
  60. package/dist/__tests__/fixtures/legal.d.ts +0 -8
  61. package/dist/__tests__/fixtures/legal.d.ts.map +0 -1
  62. package/dist/__tests__/fixtures/legal.js +0 -20
  63. package/dist/__tests__/fixtures/real-estate.d.ts +0 -19
  64. package/dist/__tests__/fixtures/real-estate.d.ts.map +0 -1
  65. package/dist/__tests__/fixtures/real-estate.js +0 -20
  66. package/dist/__tests__/index-management.test.d.ts +0 -2
  67. package/dist/__tests__/index-management.test.d.ts.map +0 -1
  68. package/dist/__tests__/index-management.test.js +0 -1148
  69. package/dist/__tests__/integration/aggregation.integration.test.d.ts +0 -2
  70. package/dist/__tests__/integration/aggregation.integration.test.d.ts.map +0 -1
  71. package/dist/__tests__/integration/aggregation.integration.test.js +0 -200
  72. package/dist/__tests__/integration/bulk.integration.test.d.ts +0 -2
  73. package/dist/__tests__/integration/bulk.integration.test.d.ts.map +0 -1
  74. package/dist/__tests__/integration/bulk.integration.test.js +0 -93
  75. package/dist/__tests__/integration/fixtures/finance.d.ts +0 -17
  76. package/dist/__tests__/integration/fixtures/finance.d.ts.map +0 -1
  77. package/dist/__tests__/integration/fixtures/finance.js +0 -42
  78. package/dist/__tests__/integration/fixtures/legal.d.ts +0 -21
  79. package/dist/__tests__/integration/fixtures/legal.d.ts.map +0 -1
  80. package/dist/__tests__/integration/fixtures/legal.js +0 -52
  81. package/dist/__tests__/integration/fixtures/real-estate.d.ts +0 -7
  82. package/dist/__tests__/integration/fixtures/real-estate.d.ts.map +0 -1
  83. package/dist/__tests__/integration/fixtures/real-estate.js +0 -22
  84. package/dist/__tests__/integration/helpers.d.ts +0 -15
  85. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  86. package/dist/__tests__/integration/helpers.js +0 -21
  87. package/dist/__tests__/integration/index-management.integration.test.d.ts +0 -2
  88. package/dist/__tests__/integration/index-management.integration.test.d.ts.map +0 -1
  89. package/dist/__tests__/integration/index-management.integration.test.js +0 -79
  90. package/dist/__tests__/integration/multi-search.integration.test.d.ts +0 -2
  91. package/dist/__tests__/integration/multi-search.integration.test.d.ts.map +0 -1
  92. package/dist/__tests__/integration/multi-search.integration.test.js +0 -55
  93. package/dist/__tests__/integration/query.integration.test.d.ts +0 -2
  94. package/dist/__tests__/integration/query.integration.test.d.ts.map +0 -1
  95. package/dist/__tests__/integration/query.integration.test.js +0 -118
  96. package/dist/__tests__/integration/suggester.integration.test.d.ts +0 -2
  97. package/dist/__tests__/integration/suggester.integration.test.d.ts.map +0 -1
  98. package/dist/__tests__/integration/suggester.integration.test.js +0 -48
  99. package/dist/__tests__/multi-search.test.d.ts +0 -2
  100. package/dist/__tests__/multi-search.test.d.ts.map +0 -1
  101. package/dist/__tests__/multi-search.test.js +0 -336
  102. package/dist/__tests__/query-builder.test.d.ts +0 -2
  103. package/dist/__tests__/query-builder.test.d.ts.map +0 -1
  104. package/dist/__tests__/query-builder.test.js +0 -5624
  105. package/dist/__tests__/suggester.test.d.ts +0 -2
  106. package/dist/__tests__/suggester.test.d.ts.map +0 -1
  107. package/dist/__tests__/suggester.test.js +0 -1001
@@ -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(clauseBuilder);
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(clauseBuilder);
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(clauseBuilder);
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(clauseBuilder);
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
- return createQueryBuilder({
123
- ...state,
124
- query: { bool: { ...state.query.bool, minimum_should_match: value } }
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
- terms: (field, value) => createQueryBuilder({ ...state, query: { terms: { [field]: value } } }),
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(clauseBuilder);
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(clauseBuilder);
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({ ...state, suggest: builtSuggestions.suggest });
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) {