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,160 +0,0 @@
1
- /**
2
- * Mapping schema types for compile-time field-type safety.
3
- * MappingsSchema carries both runtime ES properties and a phantom type M
4
- * that maps field names to their ES type literals.
5
- */
6
- import type { FieldMapping, FieldTypeString, SourceConfig } from './index-management.types.js';
7
- import type { FieldMappingWithLiteralType } from './field.types.js';
8
- /**
9
- * Options for `mappings()`.
10
- *
11
- * @param dynamic - Controls how unmapped fields are handled. Defaults to `'strict'`
12
- * to prevent unmapped fields from being silently indexed. Set to `true` to allow
13
- * dynamic mapping, or `'runtime'` for runtime fields.
14
- * @param _source - Configure which fields are stored in `_source`.
15
- * Use `{ excludes: ['embedding'] }` to prune large dense_vector fields from
16
- * returned `_source` — they remain searchable via kNN but won't bloat query responses.
17
- * @param _meta - Custom metadata to attach to the mapping.
18
- */
19
- export type MappingOptions = {
20
- dynamic?: boolean | 'strict' | 'runtime';
21
- _source?: SourceConfig;
22
- _meta?: Record<string, unknown>;
23
- };
24
- export type MappingsSchema<M extends Record<string, FieldTypeString>, F extends Record<string, FieldMappingWithLiteralType> = Record<string, FieldMappingWithLiteralType>> = Readonly<{
25
- _fieldTypes: M;
26
- _fields?: F;
27
- properties: Record<string, FieldMapping>;
28
- _mappingOptions?: MappingOptions;
29
- }>;
30
- type ESTypeToTS = {
31
- text: string;
32
- match_only_text: string;
33
- keyword: string;
34
- constant_keyword: string;
35
- wildcard: string;
36
- long: number;
37
- integer: number;
38
- short: number;
39
- byte: number;
40
- float: number;
41
- double: number;
42
- half_float: number;
43
- scaled_float: number;
44
- date: string;
45
- boolean: boolean;
46
- binary: string;
47
- ip: string;
48
- geo_point: {
49
- lat: number;
50
- lon: number;
51
- };
52
- geo_shape: Record<string, unknown>;
53
- dense_vector: number[];
54
- sparse_vector: Record<string, number>;
55
- semantic_text: string;
56
- unsigned_long: number | string;
57
- completion: string | {
58
- input: string[];
59
- weight?: number;
60
- };
61
- search_as_you_type: string;
62
- nested: unknown;
63
- object: unknown;
64
- flattened: Record<string, unknown>;
65
- alias: unknown;
66
- percolator: unknown;
67
- integer_range: {
68
- gte?: number;
69
- lte?: number;
70
- gt?: number;
71
- lt?: number;
72
- };
73
- float_range: {
74
- gte?: number;
75
- lte?: number;
76
- gt?: number;
77
- lt?: number;
78
- };
79
- long_range: {
80
- gte?: number;
81
- lte?: number;
82
- gt?: number;
83
- lt?: number;
84
- };
85
- double_range: {
86
- gte?: number;
87
- lte?: number;
88
- gt?: number;
89
- lt?: number;
90
- };
91
- date_range: {
92
- gte?: string;
93
- lte?: string;
94
- gt?: string;
95
- lt?: string;
96
- };
97
- };
98
- type InferSubFields<F extends Record<string, FieldMappingWithLiteralType>> = {
99
- [K in keyof F]: F[K] extends {
100
- _subFields: infer Sub extends Record<string, FieldMappingWithLiteralType>;
101
- } ? F[K] extends {
102
- type: 'nested';
103
- } ? Array<InferSubFields<Sub>> : InferSubFields<Sub> : F[K]['type'] extends keyof ESTypeToTS ? ESTypeToTS[F[K]['type']] : unknown;
104
- };
105
- export type Infer<S> = S extends MappingsSchema<infer _M, infer F> ? InferSubFields<F> : never;
106
- export type FieldsOfType<M extends Record<string, FieldTypeString>, Types extends FieldTypeString> = {
107
- [K in keyof M]: M[K] extends Types ? K : never;
108
- }[keyof M];
109
- /**
110
- * Removes keys from M that are sub-fields of a `nested` parent.
111
- * For example, if `variants` is a nested field, `variants.color` is excluded.
112
- * Used to prevent root-level query methods from accepting nested descendants —
113
- * those fields must be queried inside a `.nested()` callback instead.
114
- */
115
- type ExcludeNestedDescendants<M extends Record<string, FieldTypeString>> = {
116
- [K in keyof M as K extends `${FieldsOfType<M, 'nested'> & string}.${string}` ? never : K]: M[K];
117
- };
118
- export type TextFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'text' | 'match_only_text' | 'search_as_you_type'>;
119
- export type KeywordFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'keyword' | 'constant_keyword' | 'wildcard'>;
120
- export type NumericFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' | 'half_float' | 'scaled_float' | 'unsigned_long'>;
121
- export type DateFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'date'>;
122
- export type BooleanFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'boolean'>;
123
- export type GeoPointFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'geo_point'>;
124
- export type GeoShapeFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'geo_shape'>;
125
- export type VectorFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'dense_vector'>;
126
- export type IpFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'ip'>;
127
- /**
128
- * Fields valid for sorting in Elasticsearch.
129
- * Excludes `object`, `nested`, `dense_vector`, `binary`, `geo_shape`, `geo_point`, and other non-sortable types.
130
- * Note: `geo_point` fields require the special `_geo_distance` sort syntax, not a plain field sort.
131
- */
132
- export type SortableFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'keyword' | 'constant_keyword' | 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' | 'half_float' | 'scaled_float' | 'date' | 'boolean' | 'ip'>;
133
- /**
134
- * Fields valid for field collapsing in Elasticsearch.
135
- * Collapse requires a keyword or numeric field.
136
- */
137
- export type CollapsibleFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'keyword' | 'constant_keyword' | 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' | 'half_float' | 'scaled_float'>;
138
- /**
139
- * Fields valid for highlighting in Elasticsearch.
140
- * Highlighting applies to text-like and keyword fields only.
141
- */
142
- export type HighlightableFields<M extends Record<string, FieldTypeString>> = FieldsOfType<ExcludeNestedDescendants<M>, 'text' | 'match_only_text' | 'search_as_you_type' | 'keyword' | 'constant_keyword' | 'wildcard'>;
143
- /** Maps a single FieldTypeString to its TypeScript value type. Used by Val<M,K> in query constraints. */
144
- export type FieldValueType<T extends FieldTypeString> = T extends keyof ESTypeToTS ? ESTypeToTS[T] : unknown;
145
- /**
146
- * Extracts field names from M that have type `'nested'`.
147
- * Used to constrain the `path` argument of `.nested()` to valid nested field names.
148
- */
149
- export type NestedPathFields<M extends Record<string, FieldTypeString>> = FieldsOfType<M, 'nested'>;
150
- /**
151
- * Given a parent field path (e.g. `'tags'`), extracts the sub-fields of that path
152
- * from the flat expanded M map. Keys like `'tags.label'` become `'label'` in the result.
153
- *
154
- * Used to provide a typed `ClauseBuilder` for the inner callback of `.nested()`.
155
- */
156
- export type SubFieldsOf<M extends Record<string, FieldTypeString>, Path extends string> = {
157
- [K in keyof M as K extends `${Path}.${infer Rest}` ? Rest : never]: M[K] & FieldTypeString;
158
- };
159
- export {};
160
- //# sourceMappingURL=mapping.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapping.types.d.ts","sourceRoot":"","sources":["../src/mapping.types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Mapping schema types for compile-time field-type safety.
3
- * MappingsSchema carries both runtime ES properties and a phantom type M
4
- * that maps field names to their ES type literals.
5
- */
6
- export {};
@@ -1,22 +0,0 @@
1
- /**
2
- * Multi-Search API builder
3
- * Enables batching multiple search requests in a single API call
4
- */
5
- import type { FieldTypeString } from './index-management.types.js';
6
- import type { MappingsSchema } from './mapping.types.js';
7
- import { MSearchBuilder, MSearchRequest } from './multi-search.types.js';
8
- /**
9
- * Creates a multi-search builder
10
- * @returns MSearchBuilder instance
11
- */
12
- export declare const createMSearchBuilder: <M extends Record<string, FieldTypeString>>(searches?: MSearchRequest<M>[]) => MSearchBuilder<M>;
13
- /**
14
- * Create a new multi-search builder
15
- * @example
16
- * const ms = msearch(productMappings)
17
- * .addQuery(query1.build(), { index: 'products' })
18
- * .addQuery(query2.build(), { index: 'products' })
19
- * .build();
20
- */
21
- export declare const msearch: <M extends Record<string, FieldTypeString>>(_schema: MappingsSchema<M>) => MSearchBuilder<M>;
22
- //# sourceMappingURL=multi-search.builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-search.builder.d.ts","sourceRoot":"","sources":["../src/multi-search.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,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC5E,WAAU,cAAc,CAAC,CAAC,CAAC,EAAO,KACjC,cAAc,CAAC,CAAC,CAwBjB,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,sBAClE,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Multi-Search API builder
3
- * Enables batching multiple search requests in a single API call
4
- */
5
- /**
6
- * Creates a multi-search builder
7
- * @returns MSearchBuilder instance
8
- */
9
- export const createMSearchBuilder = (searches = []) => ({
10
- add: (request) => {
11
- return createMSearchBuilder([...searches, request]);
12
- },
13
- addQuery: (body, header = {}) => {
14
- return createMSearchBuilder([...searches, { header, body }]);
15
- },
16
- // eslint-disable-next-line functional/functional-parameters
17
- build: () => {
18
- return `${searches
19
- .map(({ header, body }) => {
20
- const headerLine = JSON.stringify(header || {});
21
- const bodyLine = JSON.stringify(body);
22
- return `${headerLine}\n${bodyLine}`;
23
- })
24
- .join('\n')}\n`;
25
- },
26
- // eslint-disable-next-line functional/functional-parameters
27
- buildArray: () => {
28
- return searches.flatMap(({ header, body }) => [header || {}, body]);
29
- }
30
- });
31
- /**
32
- * Create a new multi-search builder
33
- * @example
34
- * const ms = msearch(productMappings)
35
- * .addQuery(query1.build(), { index: 'products' })
36
- * .addQuery(query2.build(), { index: 'products' })
37
- * .build();
38
- */
39
- export const msearch = (_schema) => createMSearchBuilder();
@@ -1,36 +0,0 @@
1
- /**
2
- * Type definitions for Multi-Search API
3
- * Derived from official @elastic/elasticsearch types for accuracy and completeness.
4
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
5
- */
6
- import type { MsearchMultisearchHeader } from '@elastic/elasticsearch/lib/api/types';
7
- import type { FieldTypeString } from './index-management.types.js';
8
- import { QueryState } from './query.types.js';
9
- /**
10
- * Header options for each search in a multi-search request — re-exported from official @elastic/elasticsearch types
11
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
12
- */
13
- export type MSearchHeader = MsearchMultisearchHeader;
14
- /**
15
- * A single search request in a multi-search operation
16
- */
17
- export type MSearchRequest<M extends Record<string, FieldTypeString>> = {
18
- /** Optional header for this search */
19
- header?: MSearchHeader;
20
- /** The query body */
21
- body: QueryState<M>;
22
- };
23
- /**
24
- * Multi-search builder interface
25
- */
26
- export type MSearchBuilder<M extends Record<string, FieldTypeString>> = {
27
- /** Add a search request with header and body */
28
- add: (request: MSearchRequest<M>) => MSearchBuilder<M>;
29
- /** Add a search using a query builder */
30
- addQuery: (body: QueryState<M>, header?: MSearchHeader) => MSearchBuilder<M>;
31
- /** Build as NDJSON string format for Elasticsearch */
32
- build: () => string;
33
- /** Build as array of objects (header, body pairs) */
34
- buildArray: () => Array<MSearchHeader | QueryState<M>>;
35
- };
36
- //# sourceMappingURL=multi-search.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-search.types.d.ts","sourceRoot":"","sources":["../src/multi-search.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI;IACtE,sCAAsC;IACtC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI;IACtE,gDAAgD;IAChD,GAAG,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;IACvD,yCAAyC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7E,sDAAsD;IACtD,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,EAAE,MAAM,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACxD,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Type definitions for Multi-Search API
3
- * Derived from official @elastic/elasticsearch types for accuracy and completeness.
4
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
5
- */
6
- export {};
@@ -1,4 +0,0 @@
1
- import type { FieldTypeString } from './index-management.types.js';
2
- import type { QueryState, QueryBuilder } from './query.types.js';
3
- export declare const createQueryBuilder: <M extends Record<string, FieldTypeString>>(state?: QueryState<M>) => QueryBuilder<M>;
4
- //# sourceMappingURL=query.builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.builder.d.ts","sourceRoot":"","sources":["../src/query.builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAcb,MAAM,kBAAkB,CAAC;AAuH1B,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1E,QAAO,UAAU,CAAC,CAAC,CAAM,KACxB,YAAY,CAAC,CAAC,CA6Of,CAAC"}
@@ -1,264 +0,0 @@
1
- import { createAggregationBuilder } from './aggregation.builder.js';
2
- import { createSuggesterBuilder } from './suggester.builder.js';
3
- // prettier-ignore
4
- const resolveCondition = (c) => typeof c === 'function'
5
- ? resolveCondition(c())
6
- : typeof c === 'boolean'
7
- ? c
8
- : c != null;
9
- // wrap accepts `any` because this factory is shared: ClauseBuilder callers pass a wrap that returns raw DSL
10
- // objects, while QueryBuilder callers pass a wrap that returns a new QueryBuilder<M>. The generic R captures
11
- // the difference at each call site — `any` avoids a union type that would make every method's return type unreadable.
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- const createClauseMethods = (wrap, qualifyField = (f) => f) => ({
14
- // eslint-disable-next-line functional/functional-parameters
15
- matchAll: () => wrap({ match_all: {} }),
16
- // eslint-disable-next-line functional/functional-parameters
17
- matchNone: () => wrap({ match_none: {} }),
18
- match: (field, value, options) => wrap({ match: { [qualifyField(field)]: options ? { query: value, ...options } : value } }),
19
- multiMatch: (fields, query, options) => wrap({ multi_match: { fields: fields.map(qualifyField), query, ...options } }),
20
- matchPhrase: (field, query) => wrap({ match_phrase: { [qualifyField(field)]: query } }),
21
- matchPhrasePrefix: (field, value, options) => wrap({ match_phrase_prefix: { [qualifyField(field)]: options ? { query: value, ...options } : value } }),
22
- term: (field, value) => wrap({ term: { [qualifyField(field)]: value } }),
23
- terms: (field, value) => wrap({ terms: { [qualifyField(field)]: value } }),
24
- range: (field, conditions) => wrap({ range: { [qualifyField(field)]: conditions } }),
25
- exists: (field) => wrap({ exists: { field: qualifyField(field) } }),
26
- prefix: (field, value) => wrap({ prefix: { [qualifyField(field)]: value } }),
27
- wildcard: (field, value) => wrap({ wildcard: { [qualifyField(field)]: value } }),
28
- fuzzy: (field, value, options) => wrap({ fuzzy: { [qualifyField(field)]: options ? { value, ...options } : { value } } }),
29
- ids: (values) => wrap({ ids: { values } }),
30
- script: (options) => {
31
- const { source, lang = 'painless', params, boost } = options;
32
- return wrap({
33
- script: {
34
- script: { source, lang, ...(params !== undefined && { params }) },
35
- ...(boost !== undefined && { boost })
36
- }
37
- });
38
- },
39
- combinedFields: (fields, query, options) => wrap({ combined_fields: { fields: fields.map(qualifyField), query, ...options } }),
40
- queryString: (query, options) => wrap({ query_string: { query, ...options } }),
41
- simpleQueryString: (query, options) => wrap({ simple_query_string: { query, ...options } }),
42
- moreLikeThis: (fields, like, options) => wrap({
43
- more_like_this: {
44
- fields: fields.map(qualifyField),
45
- like: Array.isArray(like) ? like : [like],
46
- ...options
47
- }
48
- }),
49
- matchBoolPrefix: (field, value, options) => wrap({ match_bool_prefix: { [qualifyField(field)]: options ? { query: value, ...options } : value } })
50
- });
51
- const createClauseBuilder = (prefix) => {
52
- const qualifyField = prefix ? (f) => `${prefix}.${f}` : (f) => f;
53
- return {
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- ...createClauseMethods((dsl) => dsl, qualifyField),
56
- knn: (field, queryVector, options) => {
57
- const { k, num_candidates, ...restOptions } = options;
58
- return {
59
- knn: {
60
- field: qualifyField(field),
61
- query_vector: queryVector,
62
- k,
63
- num_candidates,
64
- ...restOptions
65
- }
66
- };
67
- },
68
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
- nested: (path, fn, options) => {
70
- const nestedPath = prefix ? `${prefix}.${path}` : path;
71
- const nestedQuery = fn(createClauseBuilder(nestedPath));
72
- return nestedQuery === undefined ? undefined : { nested: { path: nestedPath, query: nestedQuery, ...options } };
73
- },
74
- when: (condition, thenFn) => (resolveCondition(condition) ? thenFn(createClauseBuilder(prefix)) : undefined)
75
- };
76
- };
77
- export const createQueryBuilder = (state = {}) => ({
78
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
- ...createClauseMethods((dsl) => createQueryBuilder({ ...state, query: dsl })),
80
- // eslint-disable-next-line functional/functional-parameters
81
- bool: () => createQueryBuilder({ ...state, query: { bool: {} } }),
82
- must: (builderFn) => {
83
- const clause = builderFn(createClauseBuilder());
84
- const existing = state.query?.bool?.must || [];
85
- return clause === undefined
86
- ? createQueryBuilder(state)
87
- : createQueryBuilder({ ...state, query: { bool: { ...state.query.bool, must: [...existing, clause] } } });
88
- },
89
- mustNot: (builderFn) => {
90
- const clause = builderFn(createClauseBuilder());
91
- const existing = state.query?.bool?.must_not || [];
92
- return clause === undefined
93
- ? createQueryBuilder(state)
94
- : createQueryBuilder({ ...state, query: { bool: { ...state.query.bool, must_not: [...existing, clause] } } });
95
- },
96
- should: (builderFn) => {
97
- const clause = builderFn(createClauseBuilder());
98
- const existing = state.query?.bool?.should || [];
99
- return clause === undefined
100
- ? createQueryBuilder(state)
101
- : createQueryBuilder({ ...state, query: { bool: { ...state.query.bool, should: [...existing, clause] } } });
102
- },
103
- filter: (builderFn) => {
104
- const clause = builderFn(createClauseBuilder());
105
- const existing = state.query?.bool?.filter || [];
106
- return clause === undefined
107
- ? createQueryBuilder(state)
108
- : createQueryBuilder({ ...state, query: { bool: { ...state.query.bool, filter: [...existing, clause] } } });
109
- },
110
- minimumShouldMatch: (value) => createQueryBuilder({
111
- ...state,
112
- query: { bool: { ...state.query.bool, minimum_should_match: value } }
113
- }),
114
- knn: (field, queryVector, options) => {
115
- const { k, num_candidates, ...restOptions } = options;
116
- return createQueryBuilder({
117
- ...state,
118
- knn: {
119
- field,
120
- query_vector: queryVector,
121
- k,
122
- num_candidates,
123
- ...restOptions
124
- }
125
- });
126
- },
127
- nested: (path, fn, options) => {
128
- const nestedQuery = fn(createClauseBuilder(path));
129
- return nestedQuery === undefined
130
- ? createQueryBuilder(state)
131
- : createQueryBuilder({
132
- ...state,
133
- query: { nested: { path, query: nestedQuery, ...options } }
134
- });
135
- },
136
- scriptScore: (queryFn, script, options) => {
137
- const innerQuery = queryFn(createClauseBuilder()) ?? { match_all: {} };
138
- const { source, lang = 'painless', params } = script;
139
- return createQueryBuilder({
140
- ...state,
141
- query: {
142
- script_score: {
143
- query: innerQuery,
144
- script: { source, lang, ...(params !== undefined && { params }) },
145
- ...(options?.min_score !== undefined && { min_score: options.min_score }),
146
- ...(options?.boost !== undefined && { boost: options.boost })
147
- }
148
- }
149
- });
150
- },
151
- percolate: (options) => createQueryBuilder({ ...state, query: { percolate: { ...options } } }),
152
- when: (condition, thenFn) => resolveCondition(condition) ? thenFn(createQueryBuilder(state)) : createQueryBuilder(state),
153
- sort: (field, direction = 'asc') => {
154
- const existing = state.sort || [];
155
- return createQueryBuilder({
156
- ...state,
157
- sort: [...existing, { [field]: direction }]
158
- });
159
- },
160
- from: (from) => createQueryBuilder({ ...state, from }),
161
- size: (size) => createQueryBuilder({ ...state, size }),
162
- _source: (_source) => createQueryBuilder({ ...state, _source }),
163
- timeout: (timeout) => createQueryBuilder({ ...state, timeout }),
164
- trackScores: (track_scores) => createQueryBuilder({ ...state, track_scores }),
165
- explain: (explain) => createQueryBuilder({ ...state, explain }),
166
- minScore: (min_score) => createQueryBuilder({ ...state, min_score }),
167
- version: (version) => createQueryBuilder({ ...state, version }),
168
- seqNoPrimaryTerm: (seq_no_primary_term) => createQueryBuilder({ ...state, seq_no_primary_term }),
169
- trackTotalHits: (track_total_hits = true) => createQueryBuilder({ ...state, track_total_hits }),
170
- highlight: (fields, options) => {
171
- const { pre_tags, post_tags, ...fieldOptions } = options || {};
172
- const fieldValue = Object.keys(fieldOptions).length > 0 ? fieldOptions : {};
173
- const highlightFields = Object.fromEntries(fields.map((field) => [field, fieldValue]));
174
- return createQueryBuilder({
175
- ...state,
176
- highlight: {
177
- fields: highlightFields,
178
- ...(pre_tags && { pre_tags }),
179
- ...(post_tags && { post_tags })
180
- }
181
- });
182
- },
183
- geoDistance: (field, center, options) => createQueryBuilder({
184
- ...state,
185
- query: { geo_distance: { [field]: center, ...options } }
186
- }),
187
- geoBoundingBox: (field, options) => createQueryBuilder({
188
- ...state,
189
- query: { geo_bounding_box: { [field]: options } }
190
- }),
191
- geoPolygon: (field, options) => createQueryBuilder({
192
- ...state,
193
- query: { geo_polygon: { [field]: options } }
194
- }),
195
- geoShape: (field, shape, options) => createQueryBuilder({
196
- ...state,
197
- query: { geo_shape: { [field]: { shape, ...options } } }
198
- }),
199
- regexp: (field, value, options) => createQueryBuilder({
200
- ...state,
201
- query: { regexp: { [field]: options ? { value, ...options } : value } }
202
- }),
203
- constantScore: (fn, options) => {
204
- const clause = fn(createClauseBuilder());
205
- return createQueryBuilder({
206
- ...state,
207
- query: {
208
- constant_score: {
209
- filter: clause,
210
- ...options
211
- }
212
- }
213
- });
214
- },
215
- searchAfter: (values) => createQueryBuilder({ ...state, search_after: values }),
216
- preference: (value) => createQueryBuilder({ ...state, preference: value }),
217
- collapse: (field, options) => createQueryBuilder({
218
- ...state,
219
- collapse: {
220
- field,
221
- ...options
222
- }
223
- }),
224
- rescore: (queryFn, windowSize, options) => {
225
- const rescoreQuery = queryFn(createClauseBuilder());
226
- return createQueryBuilder({
227
- ...state,
228
- rescore: {
229
- window_size: windowSize,
230
- query: {
231
- rescore_query: rescoreQuery,
232
- ...options
233
- }
234
- }
235
- });
236
- },
237
- storedFields: (fields) => createQueryBuilder({ ...state, stored_fields: fields }),
238
- terminateAfter: (count) => createQueryBuilder({ ...state, terminate_after: count }),
239
- pit: (id, keepAlive) => createQueryBuilder({ ...state, pit: { id, keep_alive: keepAlive } }),
240
- indicesBoost: (boosts) => createQueryBuilder({ ...state, indices_boost: boosts }),
241
- aggs: (fn) => {
242
- const aggBuilder = createAggregationBuilder();
243
- const builtAggs = fn(aggBuilder).build();
244
- return createQueryBuilder({ ...state, aggs: builtAggs });
245
- },
246
- suggest: (fn) => {
247
- const suggesterBuilder = createSuggesterBuilder();
248
- const builtSuggestions = fn(suggesterBuilder).build();
249
- return createQueryBuilder({
250
- ...state,
251
- suggest: builtSuggestions.suggest
252
- });
253
- },
254
- // eslint-disable-next-line functional/functional-parameters
255
- build: () => {
256
- const { _includeQuery, ...rest } = state;
257
- // eslint-disable-next-line functional/no-conditional-statements
258
- if (_includeQuery === false) {
259
- const { query: _q, ...noQuery } = rest;
260
- return noQuery;
261
- }
262
- return rest;
263
- }
264
- });