Skip to content

Commit a0cd284

Browse files
authored
Fix suggest results that are a typed-key union type (#1301) (#1310)
1 parent a87d329 commit a0cd284

File tree

3 files changed

+71
-34
lines changed

3 files changed

+71
-34
lines changed

output/schema/validation-errors.json

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

output/typescript/types.ts

Lines changed: 18 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

specification/_global/search/_types/suggester.ts

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,42 +32,43 @@ import { GeoHash, GeoHashPrecision, GeoLocation } from '@_types/Geo'
3232
import { double, float, integer, long } from '@_types/Numeric'
3333
import { AdditionalProperties } from '@spec_utils/behaviors'
3434

35-
export class Suggest<T> {
35+
/**
36+
* @variants external
37+
*/
38+
export type Suggest<TDocument> =
39+
| CompletionSuggest<TDocument>
40+
| PhraseSuggest
41+
| TermSuggest
42+
43+
export class SuggestBase {
3644
length: integer
3745
offset: integer
38-
options: SuggestOption<T>[]
3946
text: string
4047
}
4148

42-
export class Suggester implements AdditionalProperties<string, FieldSuggester> {
43-
/** Global suggest text, to avoid repetition when the same text is used in several suggesters */
44-
text?: string
49+
/**
50+
* @variant name=completion
51+
*/
52+
export class CompletionSuggest<TDocument> extends SuggestBase {
53+
options: CompletionSuggestOption<TDocument>[]
4554
}
4655

4756
/**
48-
* @variants container
57+
* @variant name=phrase
4958
*/
50-
export class FieldSuggester {
51-
completion?: CompletionSuggester
52-
phrase?: PhraseSuggester
53-
prefix?: string
54-
regex?: string
55-
term?: TermSuggester
56-
text?: string
59+
export class PhraseSuggest extends SuggestBase {
60+
options: PhraseSuggestOption
5761
}
5862

59-
export class SuggesterBase {
60-
field: Field
61-
analyzer?: string
62-
size?: integer
63+
/**
64+
* @variant name=term
65+
*/
66+
export class TermSuggest extends SuggestBase {
67+
options: TermSuggestOption
6368
}
6469

65-
/** @codegen_names completion, phrase, term */
66-
export type SuggestOption<TDocument> =
67-
| CompletionSuggestOption<TDocument>
68-
| PhraseSuggestOption
69-
| TermSuggestOption
70-
70+
// In the ES code a nested Hit object is expanded inline. Not all Hit fields have been
71+
// added below as many do not make sense in the context of a suggestion.
7172
export class CompletionSuggestOption<TDocument> {
7273
collate_match?: boolean
7374
contexts?: Dictionary<string, Context[]>
@@ -76,8 +77,8 @@ export class CompletionSuggestOption<TDocument> {
7677
_index: IndexName
7778
_type?: Type
7879
_routing?: Routing
79-
_score: double
80-
_source: TDocument
80+
_score?: double
81+
_source?: TDocument
8182
text: string
8283
}
8384

@@ -89,10 +90,33 @@ export class PhraseSuggestOption {
8990

9091
export class TermSuggestOption {
9192
text: string
92-
freq?: long
93+
freq: long
9394
score: double
9495
}
9596

97+
export class Suggester implements AdditionalProperties<string, FieldSuggester> {
98+
/** Global suggest text, to avoid repetition when the same text is used in several suggesters */
99+
text?: string
100+
}
101+
102+
/**
103+
* @variants container
104+
*/
105+
export class FieldSuggester {
106+
completion?: CompletionSuggester
107+
phrase?: PhraseSuggester
108+
prefix?: string
109+
regex?: string
110+
term?: TermSuggester
111+
text?: string
112+
}
113+
114+
export class SuggesterBase {
115+
field: Field
116+
analyzer?: string
117+
size?: integer
118+
}
119+
96120
// completion suggester
97121

98122
export class CompletionSuggester extends SuggesterBase {

0 commit comments

Comments
 (0)