elasticlink 0.8.0-beta → 1.0.0-beta.2

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 (64) hide show
  1. package/README.md +631 -819
  2. package/dist/index.cjs +1528 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +1890 -0
  5. package/dist/index.d.cts.map +1 -0
  6. package/dist/index.d.ts +1889 -19
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1474 -18
  9. package/dist/index.js.map +1 -0
  10. package/package.json +25 -19
  11. package/dist/aggregation.builder.d.ts +0 -6
  12. package/dist/aggregation.builder.d.ts.map +0 -1
  13. package/dist/aggregation.builder.js +0 -64
  14. package/dist/aggregation.types.d.ts +0 -173
  15. package/dist/aggregation.types.d.ts.map +0 -1
  16. package/dist/aggregation.types.js +0 -6
  17. package/dist/bulk.builder.d.ts +0 -28
  18. package/dist/bulk.builder.d.ts.map +0 -1
  19. package/dist/bulk.builder.js +0 -51
  20. package/dist/bulk.types.d.ts +0 -46
  21. package/dist/bulk.types.d.ts.map +0 -1
  22. package/dist/bulk.types.js +0 -6
  23. package/dist/field.helpers.d.ts +0 -167
  24. package/dist/field.helpers.d.ts.map +0 -1
  25. package/dist/field.helpers.js +0 -282
  26. package/dist/field.types.d.ts +0 -255
  27. package/dist/field.types.d.ts.map +0 -1
  28. package/dist/field.types.js +0 -6
  29. package/dist/index-management.builder.d.ts +0 -33
  30. package/dist/index-management.builder.d.ts.map +0 -1
  31. package/dist/index-management.builder.js +0 -64
  32. package/dist/index-management.types.d.ts +0 -126
  33. package/dist/index-management.types.d.ts.map +0 -1
  34. package/dist/index-management.types.js +0 -6
  35. package/dist/mapping.builder.d.ts +0 -46
  36. package/dist/mapping.builder.d.ts.map +0 -1
  37. package/dist/mapping.builder.js +0 -39
  38. package/dist/mapping.types.d.ts +0 -160
  39. package/dist/mapping.types.d.ts.map +0 -1
  40. package/dist/mapping.types.js +0 -6
  41. package/dist/multi-search.builder.d.ts +0 -22
  42. package/dist/multi-search.builder.d.ts.map +0 -1
  43. package/dist/multi-search.builder.js +0 -39
  44. package/dist/multi-search.types.d.ts +0 -36
  45. package/dist/multi-search.types.d.ts.map +0 -1
  46. package/dist/multi-search.types.js +0 -6
  47. package/dist/query.builder.d.ts +0 -4
  48. package/dist/query.builder.d.ts.map +0 -1
  49. package/dist/query.builder.js +0 -264
  50. package/dist/query.types.d.ts +0 -324
  51. package/dist/query.types.d.ts.map +0 -1
  52. package/dist/query.types.js +0 -7
  53. package/dist/settings.presets.d.ts +0 -98
  54. package/dist/settings.presets.d.ts.map +0 -1
  55. package/dist/settings.presets.js +0 -115
  56. package/dist/suggester.builder.d.ts +0 -23
  57. package/dist/suggester.builder.d.ts.map +0 -1
  58. package/dist/suggester.builder.js +0 -51
  59. package/dist/suggester.types.d.ts +0 -50
  60. package/dist/suggester.types.d.ts.map +0 -1
  61. package/dist/suggester.types.js +0 -6
  62. package/dist/vector.types.d.ts +0 -17
  63. package/dist/vector.types.d.ts.map +0 -1
  64. package/dist/vector.types.js +0 -6
@@ -1,324 +0,0 @@
1
- /**
2
- * Type definitions for Query Builder
3
- * Field constraints are derived from the MappingsSchema field-type map M.
4
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
5
- */
6
- import type { QueryDslMatchQuery, QueryDslMultiMatchQuery, QueryDslFuzzyQuery, QueryDslRegexpQuery, QueryDslConstantScoreQuery, QueryDslScriptQuery, QueryDslScriptScoreQuery, QueryDslPercolateQuery, QueryDslMatchPhrasePrefixQuery, QueryDslCombinedFieldsQuery, QueryDslQueryStringQuery, QueryDslSimpleQueryStringQuery, QueryDslMoreLikeThisQuery, QueryDslMatchBoolPrefixQuery, QueryDslNestedQuery, SearchHighlightBase, Script } from '@elastic/elasticsearch/lib/api/types';
7
- import type { FieldTypeString } from './index-management.types.js';
8
- import type { TextFields, KeywordFields, NumericFields, DateFields, BooleanFields, GeoPointFields, GeoShapeFields, VectorFields, IpFields, NestedPathFields, SubFieldsOf, FieldValueType, SortableFields, CollapsibleFields, HighlightableFields } from './mapping.types.js';
9
- import type { RootAggregationBuilder, AggregationState } from './aggregation.types.js';
10
- import type { KnnOptions } from './vector.types.js';
11
- import type { SuggesterBuilder, SuggesterState } from './suggester.types.js';
12
- export type MatchOptions = Omit<QueryDslMatchQuery, 'query'>;
13
- export type MultiMatchOptions = Omit<QueryDslMultiMatchQuery, 'query' | 'fields'>;
14
- export type FuzzyOptions = Omit<QueryDslFuzzyQuery, 'value'>;
15
- export type HighlightOptions = SearchHighlightBase;
16
- export type RegexpOptions = Omit<QueryDslRegexpQuery, 'value'>;
17
- export type ConstantScoreOptions = Omit<QueryDslConstantScoreQuery, 'filter'>;
18
- export type MatchPhrasePrefixOptions = Omit<QueryDslMatchPhrasePrefixQuery, 'query'>;
19
- export type GeoDistanceOptions = {
20
- distance: string | number;
21
- unit?: 'mi' | 'km' | 'mm' | 'cm' | 'm' | 'yd' | 'ft' | 'in' | 'nmi';
22
- distance_type?: 'arc' | 'plane';
23
- };
24
- export type GeoBoundingBoxOptions = {
25
- top_left?: {
26
- lat: number;
27
- lon: number;
28
- };
29
- bottom_right?: {
30
- lat: number;
31
- lon: number;
32
- };
33
- top?: number;
34
- left?: number;
35
- bottom?: number;
36
- right?: number;
37
- };
38
- export type GeoPolygonOptions = {
39
- points: Array<{
40
- lat: number;
41
- lon: number;
42
- }>;
43
- };
44
- export type GeoShapeQueryOptions = {
45
- relation?: 'intersects' | 'disjoint' | 'within' | 'contains';
46
- boost?: number;
47
- ignore_unmapped?: boolean;
48
- };
49
- export type ScriptOptions = Script;
50
- export type ScriptQueryOptions = Script & Omit<QueryDslScriptQuery, 'script'>;
51
- export type ScriptScoreOptions = Omit<QueryDslScriptScoreQuery, 'query' | 'script'>;
52
- export type PercolateOptions = QueryDslPercolateQuery;
53
- export type CombinedFieldsOptions = Omit<QueryDslCombinedFieldsQuery, 'query' | 'fields'>;
54
- export type QueryStringOptions = Omit<QueryDslQueryStringQuery, 'query'>;
55
- export type SimpleQueryStringOptions = Omit<QueryDslSimpleQueryStringQuery, 'query'>;
56
- export type MoreLikeThisOptions = Omit<QueryDslMoreLikeThisQuery, 'fields' | 'like'>;
57
- export type MatchBoolPrefixOptions = Omit<QueryDslMatchBoolPrefixQuery, 'query'>;
58
- export type NestedOptions = Omit<QueryDslNestedQuery, 'path' | 'query'>;
59
- type TermableFields<M extends Record<string, FieldTypeString>> = KeywordFields<M> | NumericFields<M> | DateFields<M> | BooleanFields<M> | IpFields<M>;
60
- type RangeableFields<M extends Record<string, FieldTypeString>> = NumericFields<M> | DateFields<M> | KeywordFields<M> | IpFields<M>;
61
- type FuzzyableFields<M extends Record<string, FieldTypeString>> = TextFields<M> | KeywordFields<M>;
62
- type Val<M extends Record<string, FieldTypeString>, K extends keyof M> = FieldValueType<M[K]>;
63
- export type QueryState<M extends Record<string, FieldTypeString>> = {
64
- _includeQuery?: boolean;
65
- query?: any;
66
- knn?: {
67
- field: string;
68
- query_vector: number[];
69
- k?: number;
70
- num_candidates?: number;
71
- filter?: any;
72
- boost?: number;
73
- similarity?: number;
74
- };
75
- aggs?: AggregationState;
76
- suggest?: SuggesterState;
77
- from?: number;
78
- size?: number;
79
- sort?: Array<Record<string, 'asc' | 'desc'>>;
80
- _source?: Array<string & keyof M>;
81
- timeout?: string;
82
- track_scores?: boolean;
83
- explain?: boolean;
84
- min_score?: number;
85
- version?: boolean;
86
- seq_no_primary_term?: boolean;
87
- track_total_hits?: boolean | number;
88
- highlight?: {
89
- fields: Record<string, HighlightOptions>;
90
- pre_tags?: string[];
91
- post_tags?: string[];
92
- };
93
- search_after?: unknown[];
94
- preference?: string;
95
- collapse?: {
96
- field: string;
97
- inner_hits?: any;
98
- max_concurrent_group_searches?: number;
99
- };
100
- rescore?: {
101
- window_size: number;
102
- query: {
103
- rescore_query: any;
104
- query_weight?: number;
105
- rescore_query_weight?: number;
106
- score_mode?: 'total' | 'multiply' | 'avg' | 'max' | 'min';
107
- };
108
- };
109
- stored_fields?: Array<string>;
110
- terminate_after?: number;
111
- pit?: {
112
- id: string;
113
- keep_alive: string;
114
- };
115
- indices_boost?: Array<Record<string, number>>;
116
- };
117
- export type ClauseBuilder<M extends Record<string, FieldTypeString>> = {
118
- matchAll: () => any;
119
- matchNone: () => any;
120
- match: <K extends TextFields<M> & string>(field: K, value: string, options?: MatchOptions) => any;
121
- multiMatch: <K extends TextFields<M> & string>(fields: K[], value: string, options?: MultiMatchOptions) => any;
122
- matchPhrase: <K extends TextFields<M> & string>(field: K, value: string) => any;
123
- matchPhrasePrefix: <K extends TextFields<M> & string>(field: K, value: string, options?: MatchPhrasePrefixOptions) => any;
124
- term: <K extends TermableFields<M> & string>(field: K, value: Val<M, K>) => any;
125
- terms: <K extends TermableFields<M> & string>(field: K, value: Array<Val<M, K>>) => any;
126
- range: <K extends RangeableFields<M> & string>(field: K, conditions: {
127
- gte?: Val<M, K>;
128
- lte?: Val<M, K>;
129
- gt?: Val<M, K>;
130
- lt?: Val<M, K>;
131
- }) => any;
132
- exists: <K extends string & keyof M>(field: K) => any;
133
- prefix: <K extends KeywordFields<M> & string>(field: K, value: string) => any;
134
- wildcard: <K extends KeywordFields<M> & string>(field: K, value: string) => any;
135
- fuzzy: <K extends FuzzyableFields<M> & string>(field: K, value: string, options?: FuzzyOptions) => any;
136
- ids: (values: string[]) => any;
137
- knn: <K extends VectorFields<M> & string>(field: K, queryVector: number[], options: KnnOptions) => any;
138
- /**
139
- * Script query — executes a Painless script to filter documents.
140
- *
141
- * **Security:** the `source` string is executed as Painless on the Elasticsearch cluster.
142
- * Never derive `source` from untrusted user input — use `params` to pass runtime values safely instead.
143
- */
144
- script: (options: ScriptQueryOptions) => any;
145
- combinedFields: <K extends TextFields<M> & string>(fields: K[], query: string, options?: CombinedFieldsOptions) => any;
146
- /**
147
- * Query string query — parses a Lucene query syntax string.
148
- *
149
- * **Security:** if `query` is derived from untrusted user input, field-level access control and
150
- * syntax errors may expose internal field names or cause unexpected query behaviour.
151
- * Prefer `simpleQueryString` for user-facing search boxes — it silently ignores invalid syntax.
152
- */
153
- queryString: (query: string, options?: QueryStringOptions) => any;
154
- /**
155
- * Simple query string query — a safer Lucene subset for user-facing search.
156
- *
157
- * **Security:** invalid syntax is silently ignored rather than returning an error.
158
- * Still constrain which fields are searched via `options.fields` to avoid exposing sensitive fields.
159
- */
160
- simpleQueryString: (query: string, options?: SimpleQueryStringOptions) => any;
161
- moreLikeThis: (fields: Array<(TextFields<M> | KeywordFields<M>) & string>, like: string | Array<string | {
162
- _index: string;
163
- _id: string;
164
- }>, options?: MoreLikeThisOptions) => any;
165
- matchBoolPrefix: <K extends TextFields<M> & string>(field: K, value: string, options?: MatchBoolPrefixOptions) => any;
166
- /**
167
- * Conditionally execute a clause. Returns the clause DSL when `condition` is truthy, `undefined` otherwise.
168
- * The parent bool method (`must`, `filter`, etc.) treats `undefined` as a no-op — no empty arrays are emitted.
169
- *
170
- * `condition` is resolved as follows: functions are called, booleans are used as-is,
171
- * and any other value is checked for nullishness (`!= null`) — so `0` and `''` are truthy.
172
- *
173
- * **Note:** TypeScript cannot narrow closure variables inside callbacks, so values typed as `T | undefined`
174
- * still require a non-null assertion (`!`) inside the callback even when `condition` guarantees they are defined:
175
- * ```ts
176
- * .must(q => q.when(searchTerm, q => q.match('name', searchTerm!)))
177
- * ```
178
- */
179
- /**
180
- * Nested query inside a clause context — use inside `must`, `filter`, `should`, or `mustNot`.
181
- *
182
- * ```ts
183
- * query(m).bool().filter(q => q.nested('variants', qn => qn.term('color', 'red')))
184
- * ```
185
- */
186
- nested: <K extends NestedPathFields<M> & string>(path: K, fn: (q: ClauseBuilder<SubFieldsOf<M, K>>) => any, options?: NestedOptions) => any;
187
- when: (condition: unknown, thenFn: (q: ClauseBuilder<M>) => any) => any | undefined;
188
- };
189
- export type QueryBuilder<M extends Record<string, FieldTypeString>> = {
190
- bool: () => QueryBuilder<M>;
191
- must: (fn: (q: ClauseBuilder<M>) => any) => QueryBuilder<M>;
192
- mustNot: (fn: (q: ClauseBuilder<M>) => any) => QueryBuilder<M>;
193
- should: (fn: (q: ClauseBuilder<M>) => any) => QueryBuilder<M>;
194
- filter: (fn: (q: ClauseBuilder<M>) => any) => QueryBuilder<M>;
195
- minimumShouldMatch: (n: number) => QueryBuilder<M>;
196
- matchAll: () => QueryBuilder<M>;
197
- matchNone: () => QueryBuilder<M>;
198
- match: <K extends TextFields<M> & string>(field: K, value: string, options?: MatchOptions) => QueryBuilder<M>;
199
- multiMatch: <K extends TextFields<M> & string>(fields: K[], value: string, options?: MultiMatchOptions) => QueryBuilder<M>;
200
- matchPhrase: <K extends TextFields<M> & string>(field: K, value: string) => QueryBuilder<M>;
201
- matchPhrasePrefix: <K extends TextFields<M> & string>(field: K, value: string, options?: MatchPhrasePrefixOptions) => QueryBuilder<M>;
202
- term: <K extends TermableFields<M> & string>(field: K, value: Val<M, K>) => QueryBuilder<M>;
203
- terms: <K extends TermableFields<M> & string>(field: K, values: Array<Val<M, K>>) => QueryBuilder<M>;
204
- range: <K extends RangeableFields<M> & string>(field: K, conditions: {
205
- gte?: Val<M, K>;
206
- lte?: Val<M, K>;
207
- gt?: Val<M, K>;
208
- lt?: Val<M, K>;
209
- }) => QueryBuilder<M>;
210
- exists: (field: string & keyof M) => QueryBuilder<M>;
211
- prefix: <K extends KeywordFields<M> & string>(field: K, value: string) => QueryBuilder<M>;
212
- wildcard: <K extends KeywordFields<M> & string>(field: K, value: string) => QueryBuilder<M>;
213
- fuzzy: <K extends FuzzyableFields<M> & string>(field: K, value: string, options?: FuzzyOptions) => QueryBuilder<M>;
214
- ids: (values: string[]) => QueryBuilder<M>;
215
- /**
216
- * Nested query — for querying fields mapped as `nested()`.
217
- *
218
- * Each nested object is stored as a separate hidden document. The `.nested()` wrapper
219
- * is required for Elasticsearch to search those hidden documents correctly. Without it,
220
- * queries against nested sub-fields will return no results.
221
- *
222
- * The inner callback receives a typed `ClauseBuilder` constrained to the sub-fields of
223
- * `path`, so field names and value types are checked at compile time.
224
- *
225
- * For `object()` fields, no wrapper is needed — query sub-fields directly with dot-notation
226
- * (e.g. `.term('address.city', 'NYC')`).
227
- */
228
- nested: <K extends NestedPathFields<M> & string>(path: K, fn: (q: ClauseBuilder<SubFieldsOf<M, K>>) => any, options?: NestedOptions) => QueryBuilder<M>;
229
- knn: <K extends VectorFields<M> & string>(field: K, queryVector: number[], options: KnnOptions) => QueryBuilder<M>;
230
- /**
231
- * Script query — executes a Painless script to filter documents.
232
- *
233
- * **Security:** the `source` string is executed as Painless on the Elasticsearch cluster.
234
- * Never derive `source` from untrusted user input — use `params` to pass runtime values safely instead.
235
- */
236
- script: (options: ScriptQueryOptions) => QueryBuilder<M>;
237
- /**
238
- * Script score query — wraps an inner query and rescores results using a Painless script.
239
- *
240
- * **Security:** the `source` string is executed as Painless on the Elasticsearch cluster.
241
- * Never derive `source` from untrusted user input — use `params` to pass runtime values safely instead.
242
- */
243
- scriptScore: (query: (q: ClauseBuilder<M>) => any, script: ScriptOptions, options?: ScriptScoreOptions) => QueryBuilder<M>;
244
- percolate: (options: PercolateOptions) => QueryBuilder<M>;
245
- /**
246
- * Conditionally apply a branch to the query chain. Returns the result of `thenFn` when `condition` is truthy,
247
- * otherwise returns the current builder unchanged — the chain is never broken.
248
- *
249
- * `condition` is resolved as follows: functions are called, booleans are used as-is,
250
- * and any other value is checked for nullishness (`!= null`) — so `0` and `''` are truthy.
251
- *
252
- * **Note:** TypeScript cannot narrow closure variables inside callbacks, so values typed as `T | undefined`
253
- * still require a non-null assertion (`!`) inside the callback even when `condition` guarantees they are defined:
254
- * ```ts
255
- * query(m).bool()
256
- * .when(searchTerm, q => q.must(q2 => q2.match('name', searchTerm!)))
257
- * .when(minPrice, q => q.filter(q2 => q2.range('price', { gte: minPrice! })))
258
- * .build()
259
- * ```
260
- */
261
- when: (condition: unknown, thenFn: (q: QueryBuilder<M>) => QueryBuilder<M>) => QueryBuilder<M>;
262
- aggs: (fn: (agg: RootAggregationBuilder<M>) => RootAggregationBuilder<M>) => QueryBuilder<M>;
263
- suggest: (fn: (s: SuggesterBuilder<M>) => SuggesterBuilder<M>) => QueryBuilder<M>;
264
- sort: (field: (SortableFields<M> & string) | '_score' | '_doc', direction: 'asc' | 'desc') => QueryBuilder<M>;
265
- from: (from: number) => QueryBuilder<M>;
266
- size: (size: number) => QueryBuilder<M>;
267
- _source: (fields: Array<string & keyof M>) => QueryBuilder<M>;
268
- timeout: (timeout: string) => QueryBuilder<M>;
269
- trackScores: (track: boolean) => QueryBuilder<M>;
270
- explain: (explain: boolean) => QueryBuilder<M>;
271
- minScore: (score: number) => QueryBuilder<M>;
272
- version: (version: boolean) => QueryBuilder<M>;
273
- seqNoPrimaryTerm: (enabled: boolean) => QueryBuilder<M>;
274
- trackTotalHits: (value: boolean | number) => QueryBuilder<M>;
275
- highlight: (fields: Array<HighlightableFields<M> & string>, options?: HighlightOptions) => QueryBuilder<M>;
276
- geoDistance: <K extends GeoPointFields<M> & string>(field: K, center: {
277
- lat: number;
278
- lon: number;
279
- }, options: GeoDistanceOptions) => QueryBuilder<M>;
280
- geoBoundingBox: <K extends GeoPointFields<M> & string>(field: K, options: GeoBoundingBoxOptions) => QueryBuilder<M>;
281
- geoPolygon: <K extends GeoPointFields<M> & string>(field: K, options: GeoPolygonOptions) => QueryBuilder<M>;
282
- geoShape: <K extends GeoShapeFields<M> & string>(field: K, shape: Record<string, unknown>, options?: GeoShapeQueryOptions) => QueryBuilder<M>;
283
- regexp: <K extends KeywordFields<M> & string>(field: K, value: string, options?: RegexpOptions) => QueryBuilder<M>;
284
- constantScore: (fn: (q: ClauseBuilder<M>) => any, options?: ConstantScoreOptions) => QueryBuilder<M>;
285
- combinedFields: <K extends TextFields<M> & string>(fields: K[], query: string, options?: CombinedFieldsOptions) => QueryBuilder<M>;
286
- /**
287
- * Query string query — parses a Lucene query syntax string.
288
- *
289
- * **Security:** if `query` is derived from untrusted user input, field-level access control and
290
- * syntax errors may expose internal field names or cause unexpected query behaviour.
291
- * Prefer `simpleQueryString` for user-facing search boxes — it silently ignores invalid syntax.
292
- */
293
- queryString: (query: string, options?: QueryStringOptions) => QueryBuilder<M>;
294
- /**
295
- * Simple query string query — a safer Lucene subset for user-facing search.
296
- *
297
- * **Security:** invalid syntax is silently ignored rather than returning an error.
298
- * Still constrain which fields are searched via `options.fields` to avoid exposing sensitive fields.
299
- */
300
- simpleQueryString: (query: string, options?: SimpleQueryStringOptions) => QueryBuilder<M>;
301
- moreLikeThis: (fields: Array<(TextFields<M> | KeywordFields<M>) & string>, like: string | Array<string | {
302
- _index: string;
303
- _id: string;
304
- }>, options?: MoreLikeThisOptions) => QueryBuilder<M>;
305
- matchBoolPrefix: <K extends TextFields<M> & string>(field: K, value: string, options?: MatchBoolPrefixOptions) => QueryBuilder<M>;
306
- searchAfter: (values: unknown[]) => QueryBuilder<M>;
307
- preference: (value: string) => QueryBuilder<M>;
308
- collapse: (field: CollapsibleFields<M> & string, options?: {
309
- inner_hits?: any;
310
- max_concurrent_group_searches?: number;
311
- }) => QueryBuilder<M>;
312
- rescore: (queryFn: (q: ClauseBuilder<M>) => any, windowSize: number, options?: {
313
- query_weight?: number;
314
- rescore_query_weight?: number;
315
- score_mode?: 'total' | 'multiply' | 'avg' | 'max' | 'min';
316
- }) => QueryBuilder<M>;
317
- storedFields: (fields: Array<string>) => QueryBuilder<M>;
318
- terminateAfter: (count: number) => QueryBuilder<M>;
319
- pit: (id: string, keepAlive: string) => QueryBuilder<M>;
320
- indicesBoost: (boosts: Array<Record<string, number>>) => QueryBuilder<M>;
321
- build: () => QueryState<M>;
322
- };
323
- export {};
324
- //# sourceMappingURL=query.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.types.d.ts","sourceRoot":"","sources":["../src/query.types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Type definitions for Query Builder
3
- * Field constraints are derived from the MappingsSchema field-type map M.
4
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
5
- */
6
- export {};
7
- /* eslint-enable @typescript-eslint/no-explicit-any */
@@ -1,98 +0,0 @@
1
- /**
2
- * Index settings presets for common Elasticsearch scenarios.
3
- *
4
- * These are standalone functions that return `IndicesIndexSettings` objects.
5
- * Use them with `indexBuilder().settings()` for index creation, or pass directly
6
- * to the ES `_settings` API for runtime changes.
7
- *
8
- * Typical lifecycle:
9
- * 1. Create index: `indexBuilder().mappings(schema).settings(productionSearchSettings()).build()`
10
- * 2. Before bulk ingest: apply `fastIngestSettings()` via ES `_settings` API
11
- * 3. Perform bulk ingest
12
- * 4. After bulk ingest: apply `productionSearchSettings()` via ES `_settings` API
13
- * 5. Refresh: `POST /index/_refresh`
14
- */
15
- import type { IndicesIndexSettings } from '@elastic/elasticsearch/lib/api/types';
16
- /**
17
- * Balanced production settings for search workloads.
18
- *
19
- * Defaults:
20
- * - `number_of_replicas: 1` — one replica for redundancy
21
- * - `refresh_interval: '5s'` — near-real-time search without excessive refresh overhead
22
- *
23
- * @param overrides - Override or extend any setting. Applied after defaults.
24
- *
25
- * @example
26
- * const index = indexBuilder()
27
- * .mappings(schema)
28
- * .settings(productionSearchSettings())
29
- * .build();
30
- *
31
- * @example
32
- * // With best_compression for disk savings
33
- * productionSearchSettings({ codec: 'best_compression' })
34
- *
35
- * @example
36
- * // Restore production settings after bulk ingest
37
- * await client.indices.putSettings({
38
- * index: 'my-index',
39
- * body: productionSearchSettings(),
40
- * });
41
- * await client.indices.refresh({ index: 'my-index' });
42
- */
43
- export declare const productionSearchSettings: (overrides?: Partial<IndicesIndexSettings>) => IndicesIndexSettings;
44
- /**
45
- * Generate index sort settings from a field→direction map.
46
- *
47
- * Index-time sorting improves compression (similar values stored together) and
48
- * enables early termination when query sort matches index sort. Combine with
49
- * `trackTotalHits(false)` for fastest sorted queries.
50
- *
51
- * @param fields - Map of field names to sort directions.
52
- * @returns The `index` portion of settings to spread into your settings config.
53
- *
54
- * @example
55
- * const index = indexBuilder()
56
- * .mappings(schema)
57
- * .settings({
58
- * ...productionSearchSettings(),
59
- * index: indexSortSettings({ timestamp: 'desc', status: 'asc' }),
60
- * })
61
- * .build();
62
- */
63
- export declare const indexSortSettings: (fields: Record<string, "asc" | "desc">) => {
64
- sort: {
65
- field: string[];
66
- order: string[];
67
- };
68
- };
69
- /**
70
- * Settings optimized for maximum indexing speed during bulk operations.
71
- *
72
- * Apply via the ES `_settings` API before starting bulk ingest, then revert
73
- * with `productionSearchSettings()` afterward. Do not use these as permanent
74
- * index settings — they trade durability and search availability for speed.
75
- *
76
- * Defaults:
77
- * - `refresh_interval: '-1'` — disables refresh (can improve reindex time by 70%+)
78
- * - `number_of_replicas: 0` — no replication overhead during ingest
79
- * - `translog.durability: 'async'` — async translog for faster writes
80
- * - `translog.sync_interval: '30s'` — less frequent translog sync
81
- *
82
- * @param overrides - Override or extend any setting. Applied after defaults.
83
- * `translog` overrides are deep-merged so individual translog keys can be
84
- * changed without clobbering the other defaults.
85
- *
86
- * @example
87
- * // Apply before bulk ingest via ES client
88
- * await client.indices.putSettings({
89
- * index: 'my-index',
90
- * body: fastIngestSettings(),
91
- * });
92
- *
93
- * @example
94
- * // With custom overrides
95
- * fastIngestSettings({ number_of_shards: 3 })
96
- */
97
- export declare const fastIngestSettings: (overrides?: Partial<IndicesIndexSettings>) => IndicesIndexSettings;
98
- //# sourceMappingURL=settings.presets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.presets.d.ts","sourceRoot":"","sources":["../src/settings.presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,wBAAwB,GAAI,YAAY,OAAO,CAAC,oBAAoB,CAAC,KAAG,oBAInF,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,KACrC;IAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAQ9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,kBAAkB,GAAI,YAAY,OAAO,CAAC,oBAAoB,CAAC,KAAG,oBAY9E,CAAC"}
@@ -1,115 +0,0 @@
1
- /**
2
- * Index settings presets for common Elasticsearch scenarios.
3
- *
4
- * These are standalone functions that return `IndicesIndexSettings` objects.
5
- * Use them with `indexBuilder().settings()` for index creation, or pass directly
6
- * to the ES `_settings` API for runtime changes.
7
- *
8
- * Typical lifecycle:
9
- * 1. Create index: `indexBuilder().mappings(schema).settings(productionSearchSettings()).build()`
10
- * 2. Before bulk ingest: apply `fastIngestSettings()` via ES `_settings` API
11
- * 3. Perform bulk ingest
12
- * 4. After bulk ingest: apply `productionSearchSettings()` via ES `_settings` API
13
- * 5. Refresh: `POST /index/_refresh`
14
- */
15
- /**
16
- * Balanced production settings for search workloads.
17
- *
18
- * Defaults:
19
- * - `number_of_replicas: 1` — one replica for redundancy
20
- * - `refresh_interval: '5s'` — near-real-time search without excessive refresh overhead
21
- *
22
- * @param overrides - Override or extend any setting. Applied after defaults.
23
- *
24
- * @example
25
- * const index = indexBuilder()
26
- * .mappings(schema)
27
- * .settings(productionSearchSettings())
28
- * .build();
29
- *
30
- * @example
31
- * // With best_compression for disk savings
32
- * productionSearchSettings({ codec: 'best_compression' })
33
- *
34
- * @example
35
- * // Restore production settings after bulk ingest
36
- * await client.indices.putSettings({
37
- * index: 'my-index',
38
- * body: productionSearchSettings(),
39
- * });
40
- * await client.indices.refresh({ index: 'my-index' });
41
- */
42
- export const productionSearchSettings = (overrides) => ({
43
- number_of_replicas: 1,
44
- refresh_interval: '5s',
45
- ...overrides
46
- });
47
- /**
48
- * Generate index sort settings from a field→direction map.
49
- *
50
- * Index-time sorting improves compression (similar values stored together) and
51
- * enables early termination when query sort matches index sort. Combine with
52
- * `trackTotalHits(false)` for fastest sorted queries.
53
- *
54
- * @param fields - Map of field names to sort directions.
55
- * @returns The `index` portion of settings to spread into your settings config.
56
- *
57
- * @example
58
- * const index = indexBuilder()
59
- * .mappings(schema)
60
- * .settings({
61
- * ...productionSearchSettings(),
62
- * index: indexSortSettings({ timestamp: 'desc', status: 'asc' }),
63
- * })
64
- * .build();
65
- */
66
- export const indexSortSettings = (fields) => {
67
- const entries = Object.entries(fields);
68
- return {
69
- sort: {
70
- field: entries.map(([name]) => name),
71
- order: entries.map(([, dir]) => dir)
72
- }
73
- };
74
- };
75
- /**
76
- * Settings optimized for maximum indexing speed during bulk operations.
77
- *
78
- * Apply via the ES `_settings` API before starting bulk ingest, then revert
79
- * with `productionSearchSettings()` afterward. Do not use these as permanent
80
- * index settings — they trade durability and search availability for speed.
81
- *
82
- * Defaults:
83
- * - `refresh_interval: '-1'` — disables refresh (can improve reindex time by 70%+)
84
- * - `number_of_replicas: 0` — no replication overhead during ingest
85
- * - `translog.durability: 'async'` — async translog for faster writes
86
- * - `translog.sync_interval: '30s'` — less frequent translog sync
87
- *
88
- * @param overrides - Override or extend any setting. Applied after defaults.
89
- * `translog` overrides are deep-merged so individual translog keys can be
90
- * changed without clobbering the other defaults.
91
- *
92
- * @example
93
- * // Apply before bulk ingest via ES client
94
- * await client.indices.putSettings({
95
- * index: 'my-index',
96
- * body: fastIngestSettings(),
97
- * });
98
- *
99
- * @example
100
- * // With custom overrides
101
- * fastIngestSettings({ number_of_shards: 3 })
102
- */
103
- export const fastIngestSettings = (overrides) => {
104
- const { translog, ...rest } = overrides ?? {};
105
- return {
106
- number_of_replicas: 0,
107
- refresh_interval: '-1',
108
- translog: {
109
- durability: 'async',
110
- sync_interval: '30s',
111
- ...translog
112
- },
113
- ...rest
114
- };
115
- };
@@ -1,23 +0,0 @@
1
- /**
2
- * Suggester builder
3
- * Provides query suggestions, phrase corrections, and autocomplete functionality
4
- */
5
- import type { FieldTypeString } from './index-management.types.js';
6
- import type { MappingsSchema } from './mapping.types.js';
7
- import { SuggesterBuilder, SuggesterState } from './suggester.types.js';
8
- /**
9
- * Creates a suggester builder
10
- * @returns SuggesterBuilder instance
11
- */
12
- export declare const createSuggesterBuilder: <M extends Record<string, FieldTypeString>>(state?: SuggesterState) => SuggesterBuilder<M>;
13
- /**
14
- * Factory function to create a new suggester builder
15
- * @example
16
- * ```typescript
17
- * const suggestions = suggest(productMappings)
18
- * .term('name-suggestions', 'laptop', { field: 'name', size: 5 })
19
- * .build();
20
- * ```
21
- */
22
- export declare const suggest: <M extends Record<string, FieldTypeString>>(_schema: MappingsSchema<M>) => SuggesterBuilder<M>;
23
- //# sourceMappingURL=suggester.builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggester.builder.d.ts","sourceRoot":"","sources":["../src/suggester.builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC9E,QAAO,cAAmB,KACzB,gBAAgB,CAAC,CAAC,CAmCnB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,wBAChE,CAAC"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Suggester builder
3
- * Provides query suggestions, phrase corrections, and autocomplete functionality
4
- */
5
- /**
6
- * Creates a suggester builder
7
- * @returns SuggesterBuilder instance
8
- */
9
- export const createSuggesterBuilder = (state = {}) => ({
10
- term: (name, text, options) => {
11
- return createSuggesterBuilder({
12
- ...state,
13
- [name]: {
14
- text,
15
- term: options
16
- }
17
- });
18
- },
19
- phrase: (name, text, options) => {
20
- return createSuggesterBuilder({
21
- ...state,
22
- [name]: {
23
- text,
24
- phrase: options
25
- }
26
- });
27
- },
28
- completion: (name, prefix, options) => {
29
- return createSuggesterBuilder({
30
- ...state,
31
- [name]: {
32
- prefix,
33
- completion: options
34
- }
35
- });
36
- },
37
- // eslint-disable-next-line functional/functional-parameters
38
- build: () => ({
39
- suggest: state
40
- })
41
- });
42
- /**
43
- * Factory function to create a new suggester builder
44
- * @example
45
- * ```typescript
46
- * const suggestions = suggest(productMappings)
47
- * .term('name-suggestions', 'laptop', { field: 'name', size: 5 })
48
- * .build();
49
- * ```
50
- */
51
- export const suggest = (_schema) => createSuggesterBuilder();