Skip to content

Commit 2e291b9

Browse files
peononedanhermann
authored andcommitted
send the fields param via body instead of URL params (elastic#42232) (elastic#48840)
1 parent c3a1678 commit 2e291b9

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,6 @@ static Request termVectors(TermVectorsRequest tvrequest) throws IOException {
718718
Params params = new Params();
719719
params.withRouting(tvrequest.getRouting());
720720
params.withPreference(tvrequest.getPreference());
721-
params.withFields(tvrequest.getFields());
722721
params.withRealtime(tvrequest.getRealtime());
723722
request.addParameters(params.asMap());
724723
request.setEntity(createEntity(tvrequest, REQUEST_BODY_CONTENT_TYPE));

client/rest-high-level/src/main/java/org/elasticsearch/client/core/TermVectorsRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
258258
builder.field("_type", type);
259259
}
260260
if (id != null) builder.field("_id", id);
261+
if (fields != null) builder.field("fields", fields);
261262
// set values only when different from defaults
262263
if (requestPositions == false) builder.field("positions", false);
263264
if (requestPayloads == false) builder.field("payloads", false);

client/rest-high-level/src/test/java/org/elasticsearch/client/CrudIT.java

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
import java.util.List;
7777
import java.util.Map;
7878
import java.util.concurrent.atomic.AtomicReference;
79+
import java.util.stream.Collectors;
7980

8081
import static java.util.Collections.singletonMap;
8182
import static org.hamcrest.Matchers.containsString;
@@ -1216,16 +1217,16 @@ public void testMultiTermvectors() throws IOException {
12161217
.put("number_of_shards", 1)
12171218
.put("number_of_replicas", 0)
12181219
.build();
1219-
String mappings = "\"properties\":{\"field\":{\"type\":\"text\"}}";
1220+
String mappings = "\"properties\":{\"field\":{\"type\":\"text\"}, \"field2\":{\"type\":\"text\"}}";
12201221
createIndex(sourceIndex, settings, mappings);
12211222
assertEquals(
12221223
RestStatus.OK,
12231224
highLevelClient().bulk(
12241225
new BulkRequest()
12251226
.add(new IndexRequest(sourceIndex).id("1")
1226-
.source(Collections.singletonMap("field", "value1"), XContentType.JSON))
1227+
.source(Map.of("field", "value1", "field2", "hello world"), XContentType.JSON))
12271228
.add(new IndexRequest(sourceIndex).id("2")
1228-
.source(Collections.singletonMap("field", "value2"), XContentType.JSON))
1229+
.source(Map.of("field", "value2", "field2", "foo var"), XContentType.JSON))
12291230
.setRefreshPolicy(RefreshPolicy.IMMEDIATE),
12301231
RequestOptions.DEFAULT
12311232
).status()
@@ -1270,5 +1271,35 @@ public void testMultiTermvectors() throws IOException {
12701271
}
12711272
}
12721273

1274+
{
1275+
// test the behavior of fields param
1276+
MultiTermVectorsRequest mtvRequest = new MultiTermVectorsRequest();
1277+
TermVectorsRequest tvRequest1 = new TermVectorsRequest(sourceIndex, "1");
1278+
tvRequest1.setFields("field");
1279+
mtvRequest.add(tvRequest1);
1280+
1281+
TermVectorsRequest tvRequest2 = new TermVectorsRequest(sourceIndex, "2");
1282+
tvRequest2.setFields("field2");
1283+
mtvRequest.add(tvRequest2);
1284+
1285+
TermVectorsRequest tvRequest3 = new TermVectorsRequest(sourceIndex, "2");
1286+
tvRequest3.setFields("field", "field2");
1287+
mtvRequest.add(tvRequest3);
1288+
1289+
MultiTermVectorsResponse mtvResponse =
1290+
execute(mtvRequest, highLevelClient()::mtermvectors, highLevelClient()::mtermvectorsAsync);
1291+
List<List<String>> expectedRespFields = List.of(List.of("field"), List.of("field2"), List.of("field", "field2"));
1292+
List<TermVectorsResponse> responses = mtvResponse.getTermVectorsResponses();
1293+
assertEquals(expectedRespFields.size(), responses.size());
1294+
for (int i = 0; i < responses.size(); i++) {
1295+
TermVectorsResponse tvResponse = responses.get(i);
1296+
assertThat(tvResponse.getIndex(), equalTo(sourceIndex));
1297+
assertTrue(tvResponse.getFound());
1298+
assertEquals(expectedRespFields.get(i).size(), tvResponse.getTermVectorsList().size());
1299+
assertEquals(
1300+
expectedRespFields.get(i),
1301+
tvResponse.getTermVectorsList().stream().map(tv -> tv.getFieldName()).collect(Collectors.toList()));
1302+
}
1303+
}
12731304
}
12741305
}

client/rest-high-level/src/test/java/org/elasticsearch/client/RequestConvertersTests.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,11 +1575,6 @@ public void testTermVectors() throws IOException {
15751575

15761576
assertEquals(HttpGet.METHOD_NAME, request.getMethod());
15771577
assertEquals(endpoint.toString(), request.getEndpoint());
1578-
if (hasFields) {
1579-
assertThat(request.getParameters(), hasKey("fields"));
1580-
String[] requestFields = Strings.splitStringByCommaToArray(request.getParameters().get("fields"));
1581-
assertArrayEquals(tvRequest.getFields(), requestFields);
1582-
}
15831578
for (Map.Entry<String, String> param : expectedParams.entrySet()) {
15841579
assertThat(request.getParameters(), hasEntry(param.getKey(), param.getValue()));
15851580
}

0 commit comments

Comments
 (0)