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.
- package/README.md +631 -819
- package/dist/index.cjs +1528 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1890 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1889 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1474 -18
- package/dist/index.js.map +1 -0
- package/package.json +25 -19
- package/dist/aggregation.builder.d.ts +0 -6
- package/dist/aggregation.builder.d.ts.map +0 -1
- package/dist/aggregation.builder.js +0 -64
- package/dist/aggregation.types.d.ts +0 -173
- package/dist/aggregation.types.d.ts.map +0 -1
- package/dist/aggregation.types.js +0 -6
- package/dist/bulk.builder.d.ts +0 -28
- package/dist/bulk.builder.d.ts.map +0 -1
- package/dist/bulk.builder.js +0 -51
- package/dist/bulk.types.d.ts +0 -46
- package/dist/bulk.types.d.ts.map +0 -1
- package/dist/bulk.types.js +0 -6
- package/dist/field.helpers.d.ts +0 -167
- package/dist/field.helpers.d.ts.map +0 -1
- package/dist/field.helpers.js +0 -282
- package/dist/field.types.d.ts +0 -255
- package/dist/field.types.d.ts.map +0 -1
- package/dist/field.types.js +0 -6
- package/dist/index-management.builder.d.ts +0 -33
- package/dist/index-management.builder.d.ts.map +0 -1
- package/dist/index-management.builder.js +0 -64
- package/dist/index-management.types.d.ts +0 -126
- package/dist/index-management.types.d.ts.map +0 -1
- package/dist/index-management.types.js +0 -6
- package/dist/mapping.builder.d.ts +0 -46
- package/dist/mapping.builder.d.ts.map +0 -1
- package/dist/mapping.builder.js +0 -39
- package/dist/mapping.types.d.ts +0 -160
- package/dist/mapping.types.d.ts.map +0 -1
- package/dist/mapping.types.js +0 -6
- package/dist/multi-search.builder.d.ts +0 -22
- package/dist/multi-search.builder.d.ts.map +0 -1
- package/dist/multi-search.builder.js +0 -39
- package/dist/multi-search.types.d.ts +0 -36
- package/dist/multi-search.types.d.ts.map +0 -1
- package/dist/multi-search.types.js +0 -6
- package/dist/query.builder.d.ts +0 -4
- package/dist/query.builder.d.ts.map +0 -1
- package/dist/query.builder.js +0 -264
- package/dist/query.types.d.ts +0 -324
- package/dist/query.types.d.ts.map +0 -1
- package/dist/query.types.js +0 -7
- package/dist/settings.presets.d.ts +0 -98
- package/dist/settings.presets.d.ts.map +0 -1
- package/dist/settings.presets.js +0 -115
- package/dist/suggester.builder.d.ts +0 -23
- package/dist/suggester.builder.d.ts.map +0 -1
- package/dist/suggester.builder.js +0 -51
- package/dist/suggester.types.d.ts +0 -50
- package/dist/suggester.types.d.ts.map +0 -1
- package/dist/suggester.types.js +0 -6
- package/dist/vector.types.d.ts +0 -17
- package/dist/vector.types.d.ts.map +0 -1
- package/dist/vector.types.js +0 -6
package/dist/mapping.types.d.ts
DELETED
|
@@ -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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"}
|
package/dist/mapping.types.js
DELETED
|
@@ -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"}
|
package/dist/query.builder.d.ts
DELETED
|
@@ -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"}
|
package/dist/query.builder.js
DELETED
|
@@ -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
|
-
});
|