Skip to content

Commit 3f4c2eb

Browse files
authored
Update API spec, fix some spec-related java client issues (#348) (#350)
1 parent bfdd07b commit 3f4c2eb

File tree

5 files changed

+120
-51
lines changed

5 files changed

+120
-51
lines changed

java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/MappingCharFilter.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public class MappingCharFilter extends CharFilterBase implements CharFilterDefin
5757
private MappingCharFilter(Builder builder) {
5858
super(builder);
5959

60-
this.mappings = ApiTypeHelper.unmodifiableRequired(builder.mappings, this, "mappings");
60+
this.mappings = ApiTypeHelper.unmodifiable(builder.mappings);
6161
this.mappingsPath = builder.mappingsPath;
6262

6363
}
@@ -75,7 +75,7 @@ public CharFilterDefinition.Kind _charFilterDefinitionKind() {
7575
}
7676

7777
/**
78-
* Required - API name: {@code mappings}
78+
* API name: {@code mappings}
7979
*/
8080
public final List<String> mappings() {
8181
return this.mappings;
@@ -120,13 +120,14 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
120120
public static class Builder extends CharFilterBase.AbstractBuilder<Builder>
121121
implements
122122
ObjectBuilder<MappingCharFilter> {
123+
@Nullable
123124
private List<String> mappings;
124125

125126
@Nullable
126127
private String mappingsPath;
127128

128129
/**
129-
* Required - API name: {@code mappings}
130+
* API name: {@code mappings}
130131
* <p>
131132
* Adds all elements of <code>list</code> to <code>mappings</code>.
132133
*/
@@ -136,7 +137,7 @@ public final Builder mappings(List<String> list) {
136137
}
137138

138139
/**
139-
* Required - API name: {@code mappings}
140+
* API name: {@code mappings}
140141
* <p>
141142
* Adds one or more values to <code>mappings</code>.
142143
*/

java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/PhraseSuggest.java

+33-10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import co.elastic.clients.util.ApiTypeHelper;
3232
import co.elastic.clients.util.ObjectBuilder;
3333
import jakarta.json.stream.JsonGenerator;
34+
import java.util.List;
3435
import java.util.Objects;
3536
import java.util.function.Function;
3637
import javax.annotation.Nullable;
@@ -45,14 +46,14 @@
4546
*/
4647
@JsonpDeserializable
4748
public class PhraseSuggest extends SuggestBase implements SuggestionVariant {
48-
private final PhraseSuggestOption options;
49+
private final List<PhraseSuggestOption> options;
4950

5051
// ---------------------------------------------------------------------------------------------
5152

5253
private PhraseSuggest(Builder builder) {
5354
super(builder);
5455

55-
this.options = ApiTypeHelper.requireNonNull(builder.options, this, "options");
56+
this.options = ApiTypeHelper.unmodifiableRequired(builder.options, this, "options");
5657

5758
}
5859

@@ -71,15 +72,23 @@ public Suggestion.Kind _suggestionKind() {
7172
/**
7273
* Required - API name: {@code options}
7374
*/
74-
public final PhraseSuggestOption options() {
75+
public final List<PhraseSuggestOption> options() {
7576
return this.options;
7677
}
7778

7879
protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
7980

8081
super.serializeInternal(generator, mapper);
81-
generator.writeKey("options");
82-
this.options.serialize(generator, mapper);
82+
if (ApiTypeHelper.isDefined(this.options)) {
83+
generator.writeKey("options");
84+
generator.writeStartArray();
85+
for (PhraseSuggestOption item0 : this.options) {
86+
item0.serialize(generator, mapper);
87+
88+
}
89+
generator.writeEnd();
90+
91+
}
8392

8493
}
8594

@@ -90,21 +99,35 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
9099
*/
91100

92101
public static class Builder extends SuggestBase.AbstractBuilder<Builder> implements ObjectBuilder<PhraseSuggest> {
93-
private PhraseSuggestOption options;
102+
private List<PhraseSuggestOption> options;
103+
104+
/**
105+
* Required - API name: {@code options}
106+
* <p>
107+
* Adds all elements of <code>list</code> to <code>options</code>.
108+
*/
109+
public final Builder options(List<PhraseSuggestOption> list) {
110+
this.options = _listAddAll(this.options, list);
111+
return this;
112+
}
94113

95114
/**
96115
* Required - API name: {@code options}
116+
* <p>
117+
* Adds one or more values to <code>options</code>.
97118
*/
98-
public final Builder options(PhraseSuggestOption value) {
99-
this.options = value;
119+
public final Builder options(PhraseSuggestOption value, PhraseSuggestOption... values) {
120+
this.options = _listAdd(this.options, value, values);
100121
return this;
101122
}
102123

103124
/**
104125
* Required - API name: {@code options}
126+
* <p>
127+
* Adds a value to <code>options</code> using a builder lambda.
105128
*/
106129
public final Builder options(Function<PhraseSuggestOption.Builder, ObjectBuilder<PhraseSuggestOption>> fn) {
107-
return this.options(fn.apply(new PhraseSuggestOption.Builder()).build());
130+
return options(fn.apply(new PhraseSuggestOption.Builder()).build());
108131
}
109132

110133
@Override
@@ -135,7 +158,7 @@ public PhraseSuggest build() {
135158

136159
protected static void setupPhraseSuggestDeserializer(ObjectDeserializer<PhraseSuggest.Builder> op) {
137160
SuggestBase.setupSuggestBaseDeserializer(op);
138-
op.add(Builder::options, PhraseSuggestOption._DESERIALIZER, "options");
161+
op.add(Builder::options, JsonpDeserializer.arrayDeserializer(PhraseSuggestOption._DESERIALIZER), "options");
139162

140163
}
141164

java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/TermSuggest.java

+33-10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import co.elastic.clients.util.ApiTypeHelper;
3232
import co.elastic.clients.util.ObjectBuilder;
3333
import jakarta.json.stream.JsonGenerator;
34+
import java.util.List;
3435
import java.util.Objects;
3536
import java.util.function.Function;
3637
import javax.annotation.Nullable;
@@ -45,14 +46,14 @@
4546
*/
4647
@JsonpDeserializable
4748
public class TermSuggest extends SuggestBase implements SuggestionVariant {
48-
private final TermSuggestOption options;
49+
private final List<TermSuggestOption> options;
4950

5051
// ---------------------------------------------------------------------------------------------
5152

5253
private TermSuggest(Builder builder) {
5354
super(builder);
5455

55-
this.options = ApiTypeHelper.requireNonNull(builder.options, this, "options");
56+
this.options = ApiTypeHelper.unmodifiableRequired(builder.options, this, "options");
5657

5758
}
5859

@@ -71,15 +72,23 @@ public Suggestion.Kind _suggestionKind() {
7172
/**
7273
* Required - API name: {@code options}
7374
*/
74-
public final TermSuggestOption options() {
75+
public final List<TermSuggestOption> options() {
7576
return this.options;
7677
}
7778

7879
protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
7980

8081
super.serializeInternal(generator, mapper);
81-
generator.writeKey("options");
82-
this.options.serialize(generator, mapper);
82+
if (ApiTypeHelper.isDefined(this.options)) {
83+
generator.writeKey("options");
84+
generator.writeStartArray();
85+
for (TermSuggestOption item0 : this.options) {
86+
item0.serialize(generator, mapper);
87+
88+
}
89+
generator.writeEnd();
90+
91+
}
8392

8493
}
8594

@@ -90,21 +99,35 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
9099
*/
91100

92101
public static class Builder extends SuggestBase.AbstractBuilder<Builder> implements ObjectBuilder<TermSuggest> {
93-
private TermSuggestOption options;
102+
private List<TermSuggestOption> options;
103+
104+
/**
105+
* Required - API name: {@code options}
106+
* <p>
107+
* Adds all elements of <code>list</code> to <code>options</code>.
108+
*/
109+
public final Builder options(List<TermSuggestOption> list) {
110+
this.options = _listAddAll(this.options, list);
111+
return this;
112+
}
94113

95114
/**
96115
* Required - API name: {@code options}
116+
* <p>
117+
* Adds one or more values to <code>options</code>.
97118
*/
98-
public final Builder options(TermSuggestOption value) {
99-
this.options = value;
119+
public final Builder options(TermSuggestOption value, TermSuggestOption... values) {
120+
this.options = _listAdd(this.options, value, values);
100121
return this;
101122
}
102123

103124
/**
104125
* Required - API name: {@code options}
126+
* <p>
127+
* Adds a value to <code>options</code> using a builder lambda.
105128
*/
106129
public final Builder options(Function<TermSuggestOption.Builder, ObjectBuilder<TermSuggestOption>> fn) {
107-
return this.options(fn.apply(new TermSuggestOption.Builder()).build());
130+
return options(fn.apply(new TermSuggestOption.Builder()).build());
108131
}
109132

110133
@Override
@@ -135,7 +158,7 @@ public TermSuggest build() {
135158

136159
protected static void setupTermSuggestDeserializer(ObjectDeserializer<TermSuggest.Builder> op) {
137160
SuggestBase.setupSuggestBaseDeserializer(op);
138-
op.add(Builder::options, TermSuggestOption._DESERIALIZER, "options");
161+
op.add(Builder::options, JsonpDeserializer.arrayDeserializer(TermSuggestOption._DESERIALIZER), "options");
139162

140163
}
141164

java-client/src/main/java/co/elastic/clients/elasticsearch/doc-files/api-spec.html

+27-27
Original file line numberDiff line numberDiff line change
@@ -132,17 +132,17 @@
132132
'_global.search._types.BoundaryScanner': '_global/search/_types/highlighting.ts#L26-L30',
133133
'_global.search._types.BuiltinHighlighterType': '_global/search/_types/highlighting.ts#L82-L87',
134134
'_global.search._types.Collector': '_global/search/_types/profile.ts#L85-L90',
135-
'_global.search._types.CompletionContext': '_global/search/_types/suggester.ts#L153-L160',
136-
'_global.search._types.CompletionSuggest': '_global/search/_types/suggester.ts#L49-L54',
137-
'_global.search._types.CompletionSuggestOption': '_global/search/_types/suggester.ts#L72-L84',
138-
'_global.search._types.CompletionSuggester': '_global/search/_types/suggester.ts#L127-L133',
139-
'_global.search._types.Context': '_global/search/_types/suggester.ts#L145-L151',
140-
'_global.search._types.DirectGenerator': '_global/search/_types/suggester.ts#L164-L176',
135+
'_global.search._types.CompletionContext': '_global/search/_types/suggester.ts#L155-L162',
136+
'_global.search._types.CompletionSuggest': '_global/search/_types/suggester.ts#L49-L56',
137+
'_global.search._types.CompletionSuggestOption': '_global/search/_types/suggester.ts#L74-L86',
138+
'_global.search._types.CompletionSuggester': '_global/search/_types/suggester.ts#L129-L135',
139+
'_global.search._types.Context': '_global/search/_types/suggester.ts#L147-L153',
140+
'_global.search._types.DirectGenerator': '_global/search/_types/suggester.ts#L166-L178',
141141
'_global.search._types.FetchProfile': '_global/search/_types/profile.ts#L138-L145',
142142
'_global.search._types.FetchProfileBreakdown': '_global/search/_types/profile.ts#L147-L154',
143143
'_global.search._types.FetchProfileDebug': '_global/search/_types/profile.ts#L156-L159',
144144
'_global.search._types.FieldCollapse': '_global/search/_types/FieldCollapse.ts#L24-L28',
145-
'_global.search._types.FieldSuggester': '_global/search/_types/suggester.ts#L103-L117',
145+
'_global.search._types.FieldSuggester': '_global/search/_types/suggester.ts#L105-L119',
146146
'_global.search._types.Highlight': '_global/search/_types/highlighting.ts#L56-L59',
147147
'_global.search._types.HighlightBase': '_global/search/_types/highlighting.ts#L32-L54',
148148
'_global.search._types.HighlightField': '_global/search/_types/highlighting.ts#L89-L92',
@@ -155,15 +155,15 @@
155155
'_global.search._types.HitsMetadata': '_global/search/_types/hits.ts#L66-L72',
156156
'_global.search._types.InnerHits': '_global/search/_types/hits.ts#L107-L125',
157157
'_global.search._types.InnerHitsResult': '_global/search/_types/hits.ts#L85-L87',
158-
'_global.search._types.LaplaceSmoothingModel': '_global/search/_types/suggester.ts#L210-L212',
159-
'_global.search._types.LinearInterpolationSmoothingModel': '_global/search/_types/suggester.ts#L214-L218',
158+
'_global.search._types.LaplaceSmoothingModel': '_global/search/_types/suggester.ts#L212-L214',
159+
'_global.search._types.LinearInterpolationSmoothingModel': '_global/search/_types/suggester.ts#L216-L220',
160160
'_global.search._types.NestedIdentity': '_global/search/_types/hits.ts#L89-L93',
161-
'_global.search._types.PhraseSuggest': '_global/search/_types/suggester.ts#L56-L61',
162-
'_global.search._types.PhraseSuggestCollate': '_global/search/_types/suggester.ts#L178-L182',
163-
'_global.search._types.PhraseSuggestCollateQuery': '_global/search/_types/suggester.ts#L184-L187',
164-
'_global.search._types.PhraseSuggestHighlight': '_global/search/_types/suggester.ts#L205-L208',
165-
'_global.search._types.PhraseSuggestOption': '_global/search/_types/suggester.ts#L86-L90',
166-
'_global.search._types.PhraseSuggester': '_global/search/_types/suggester.ts#L189-L203',
161+
'_global.search._types.PhraseSuggest': '_global/search/_types/suggester.ts#L58-L63',
162+
'_global.search._types.PhraseSuggestCollate': '_global/search/_types/suggester.ts#L180-L184',
163+
'_global.search._types.PhraseSuggestCollateQuery': '_global/search/_types/suggester.ts#L186-L189',
164+
'_global.search._types.PhraseSuggestHighlight': '_global/search/_types/suggester.ts#L207-L210',
165+
'_global.search._types.PhraseSuggestOption': '_global/search/_types/suggester.ts#L88-L92',
166+
'_global.search._types.PhraseSuggester': '_global/search/_types/suggester.ts#L191-L205',
167167
'_global.search._types.PointInTimeReference': '_global/search/_types/PointInTimeReference.ts#L23-L26',
168168
'_global.search._types.Profile': '_global/search/_types/profile.ts#L92-L94',
169169
'_global.search._types.QueryBreakdown': '_global/search/_types/profile.ts#L96-L115',
@@ -173,21 +173,21 @@
173173
'_global.search._types.ScoreMode': '_global/search/_types/rescoring.ts#L36-L42',
174174
'_global.search._types.SearchProfile': '_global/search/_types/profile.ts#L125-L129',
175175
'_global.search._types.ShardProfile': '_global/search/_types/profile.ts#L131-L136',
176-
'_global.search._types.SmoothingModelContainer': '_global/search/_types/suggester.ts#L222-L229',
176+
'_global.search._types.SmoothingModelContainer': '_global/search/_types/suggester.ts#L224-L231',
177177
'_global.search._types.SourceConfig': '_global/search/_types/SourceFilter.ts#L33-L37',
178178
'_global.search._types.SourceConfigParam': '_global/search/_types/SourceFilter.ts#L39-L45',
179179
'_global.search._types.SourceFilter': '_global/search/_types/SourceFilter.ts#L23-L31',
180-
'_global.search._types.StringDistance': '_global/search/_types/suggester.ts#L237-L243',
181-
'_global.search._types.StupidBackoffSmoothingModel': '_global/search/_types/suggester.ts#L231-L233',
180+
'_global.search._types.StringDistance': '_global/search/_types/suggester.ts#L239-L245',
181+
'_global.search._types.StupidBackoffSmoothingModel': '_global/search/_types/suggester.ts#L233-L235',
182182
'_global.search._types.Suggest': '_global/search/_types/suggester.ts#L35-L41',
183183
'_global.search._types.SuggestBase': '_global/search/_types/suggester.ts#L43-L47',
184-
'_global.search._types.SuggestFuzziness': '_global/search/_types/suggester.ts#L135-L141',
185-
'_global.search._types.SuggestSort': '_global/search/_types/suggester.ts#L245-L248',
186-
'_global.search._types.Suggester': '_global/search/_types/suggester.ts#L98-L101',
187-
'_global.search._types.SuggesterBase': '_global/search/_types/suggester.ts#L119-L123',
188-
'_global.search._types.TermSuggest': '_global/search/_types/suggester.ts#L63-L68',
189-
'_global.search._types.TermSuggestOption': '_global/search/_types/suggester.ts#L92-L96',
190-
'_global.search._types.TermSuggester': '_global/search/_types/suggester.ts#L250-L263',
184+
'_global.search._types.SuggestFuzziness': '_global/search/_types/suggester.ts#L137-L143',
185+
'_global.search._types.SuggestSort': '_global/search/_types/suggester.ts#L247-L250',
186+
'_global.search._types.Suggester': '_global/search/_types/suggester.ts#L100-L103',
187+
'_global.search._types.SuggesterBase': '_global/search/_types/suggester.ts#L121-L125',
188+
'_global.search._types.TermSuggest': '_global/search/_types/suggester.ts#L65-L70',
189+
'_global.search._types.TermSuggestOption': '_global/search/_types/suggester.ts#L94-L98',
190+
'_global.search._types.TermSuggester': '_global/search/_types/suggester.ts#L252-L265',
191191
'_global.search._types.TotalHits': '_global/search/_types/hits.ts#L95-L98',
192192
'_global.search._types.TotalHitsRelation': '_global/search/_types/hits.ts#L100-L105',
193193
'_global.search._types.TrackHits': '_global/search/_types/hits.ts#L127-L135',
@@ -2323,10 +2323,10 @@
23232323
if (hash.length > 1) {
23242324
hash = hash.substring(1);
23252325
}
2326-
window.location = "https://github.com/elastic/elasticsearch-specification/tree/cda51c1e6118ea3ba2bb973b77fbf5dc32badebc/specification/" + (paths[hash] || "");
2326+
window.location = "https://github.com/elastic/elasticsearch-specification/tree/984c21945c71f1a658355803d43a7add2dac7265/specification/" + (paths[hash] || "");
23272327
</script>
23282328
</head>
23292329
<body>
2330-
Please see the <a href="https://github.com/elastic/elasticsearch-specification/tree/cda51c1e6118ea3ba2bb973b77fbf5dc32badebc/specification/">Elasticsearch API specification</a>.
2330+
Please see the <a href="https://github.com/elastic/elasticsearch-specification/tree/984c21945c71f1a658355803d43a7add2dac7265/specification/">Elasticsearch API specification</a>.
23312331
</body>
23322332
</html>

java-client/src/test/java/co/elastic/clients/elasticsearch/spec_issues/SpecIssuesTest.java

+22
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import co.elastic.clients.elasticsearch.indices.CreateIndexRequest;
3030
import co.elastic.clients.elasticsearch.indices.GetFieldMappingRequest;
3131
import co.elastic.clients.elasticsearch.indices.GetFieldMappingResponse;
32+
import co.elastic.clients.elasticsearch.indices.IndexSettings;
3233
import co.elastic.clients.elasticsearch.model.ModelTestCase;
3334
import co.elastic.clients.elasticsearch.snapshot.RestoreResponse;
3435
import co.elastic.clients.json.JsonData;
@@ -47,6 +48,27 @@
4748
*/
4849
public class SpecIssuesTest extends ModelTestCase {
4950

51+
@Test
52+
public void i0328_charFilter() throws Exception {
53+
// Both mappings and mappings_path are optional
54+
String json =
55+
"{\n" +
56+
" \"analysis\": { \n" +
57+
" \"char_filter\": {\n" +
58+
" \"multi_char_filter\": {\n" +
59+
" \"type\": \"mapping\",\n" +
60+
// " \"mappings\": [\n" +
61+
// " \"xyz => xyz\"\n" +
62+
// " ],\n" +
63+
" \"mappings_path\": \"analysis/multi-char-replacement.txt\"\n" +
64+
" }\n" +
65+
" }\n" +
66+
" }\n" +
67+
"}";
68+
69+
IndexSettings.of(b -> b.withJson(new StringReader(json)));
70+
}
71+
5072
@Disabled("Not fixed yet")
5173
@Test
5274
public void i0201_restoreResponse() throws Exception {

0 commit comments

Comments
 (0)