|
76 | 76 | import java.util.List;
|
77 | 77 | import java.util.Map;
|
78 | 78 | import java.util.concurrent.atomic.AtomicReference;
|
| 79 | +import java.util.stream.Collectors; |
79 | 80 |
|
80 | 81 | import static java.util.Collections.singletonMap;
|
81 | 82 | import static org.hamcrest.Matchers.containsString;
|
@@ -1216,16 +1217,20 @@ public void testMultiTermvectors() throws IOException {
|
1216 | 1217 | .put("number_of_shards", 1)
|
1217 | 1218 | .put("number_of_replicas", 0)
|
1218 | 1219 | .build();
|
1219 |
| - String mappings = "\"properties\":{\"field\":{\"type\":\"text\"}}"; |
| 1220 | + String mappings = "\"properties\":{\"field\":{\"type\":\"text\"}, \"field2\":{\"type\":\"text\"}}"; |
1220 | 1221 | createIndex(sourceIndex, settings, mappings);
|
| 1222 | + final Map<String, String> doc1 = new HashMap<>(); |
| 1223 | + doc1.put("field", "value1"); |
| 1224 | + doc1.put("field2", "hello world"); |
| 1225 | + final Map<String, String> doc2 = new HashMap<>(); |
| 1226 | + doc2.put("field", "value2"); |
| 1227 | + doc2.put("field2", "foo var"); |
1221 | 1228 | assertEquals(
|
1222 | 1229 | RestStatus.OK,
|
1223 | 1230 | highLevelClient().bulk(
|
1224 | 1231 | new BulkRequest()
|
1225 |
| - .add(new IndexRequest(sourceIndex).id("1") |
1226 |
| - .source(Collections.singletonMap("field", "value1"), XContentType.JSON)) |
1227 |
| - .add(new IndexRequest(sourceIndex).id("2") |
1228 |
| - .source(Collections.singletonMap("field", "value2"), XContentType.JSON)) |
| 1232 | + .add(new IndexRequest(sourceIndex).id("1").source(doc1, XContentType.JSON)) |
| 1233 | + .add(new IndexRequest(sourceIndex).id("2").source(doc2, XContentType.JSON)) |
1229 | 1234 | .setRefreshPolicy(RefreshPolicy.IMMEDIATE),
|
1230 | 1235 | RequestOptions.DEFAULT
|
1231 | 1236 | ).status()
|
@@ -1270,5 +1275,41 @@ public void testMultiTermvectors() throws IOException {
|
1270 | 1275 | }
|
1271 | 1276 | }
|
1272 | 1277 |
|
| 1278 | + { |
| 1279 | + // test the behavior of fields param |
| 1280 | + MultiTermVectorsRequest mtvRequest = new MultiTermVectorsRequest(); |
| 1281 | + TermVectorsRequest tvRequest1 = new TermVectorsRequest(sourceIndex, "1"); |
| 1282 | + tvRequest1.setFields("field"); |
| 1283 | + mtvRequest.add(tvRequest1); |
| 1284 | + |
| 1285 | + TermVectorsRequest tvRequest2 = new TermVectorsRequest(sourceIndex, "2"); |
| 1286 | + tvRequest2.setFields("field2"); |
| 1287 | + mtvRequest.add(tvRequest2); |
| 1288 | + |
| 1289 | + TermVectorsRequest tvRequest3 = new TermVectorsRequest(sourceIndex, "2"); |
| 1290 | + tvRequest3.setFields("field", "field2"); |
| 1291 | + mtvRequest.add(tvRequest3); |
| 1292 | + |
| 1293 | + MultiTermVectorsResponse mtvResponse = |
| 1294 | + execute(mtvRequest, highLevelClient()::mtermvectors, highLevelClient()::mtermvectorsAsync); |
| 1295 | + final List<String> expectedFields = new ArrayList<>(); |
| 1296 | + expectedFields.add("field"); |
| 1297 | + expectedFields.add("field2"); |
| 1298 | + List<List<String>> expectedRespFields = new ArrayList<>(); |
| 1299 | + expectedRespFields.add(Collections.singletonList("field")); |
| 1300 | + expectedRespFields.add(Collections.singletonList("field2")); |
| 1301 | + expectedRespFields.add(expectedFields); |
| 1302 | + List<TermVectorsResponse> responses = mtvResponse.getTermVectorsResponses(); |
| 1303 | + assertEquals(expectedRespFields.size(), responses.size()); |
| 1304 | + for (int i = 0; i < responses.size(); i++) { |
| 1305 | + TermVectorsResponse tvResponse = responses.get(i); |
| 1306 | + assertThat(tvResponse.getIndex(), equalTo(sourceIndex)); |
| 1307 | + assertTrue(tvResponse.getFound()); |
| 1308 | + assertEquals(expectedRespFields.get(i).size(), tvResponse.getTermVectorsList().size()); |
| 1309 | + assertEquals( |
| 1310 | + expectedRespFields.get(i), |
| 1311 | + tvResponse.getTermVectorsList().stream().map(tv -> tv.getFieldName()).collect(Collectors.toList())); |
| 1312 | + } |
| 1313 | + } |
1273 | 1314 | }
|
1274 | 1315 | }
|
0 commit comments