|  | @@ -54,6 +54,8 @@ import org.elasticsearch.client.RequestOptions;
 | 
	
		
			
				|  |  |  import org.elasticsearch.client.Response;
 | 
	
		
			
				|  |  |  import org.elasticsearch.client.RestHighLevelClient;
 | 
	
		
			
				|  |  |  import org.elasticsearch.client.RethrottleRequest;
 | 
	
		
			
				|  |  | +import org.elasticsearch.client.core.MultiTermVectorsRequest;
 | 
	
		
			
				|  |  | +import org.elasticsearch.client.core.MultiTermVectorsResponse;
 | 
	
		
			
				|  |  |  import org.elasticsearch.client.core.TermVectorsRequest;
 | 
	
		
			
				|  |  |  import org.elasticsearch.client.core.TermVectorsResponse;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.Strings;
 | 
	
	
		
			
				|  | @@ -1671,6 +1673,80 @@ public class CRUDDocumentationIT extends ESRestHighLevelClientTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Not entirely sure if _mtermvectors belongs to CRUD, and in the absence of a better place, will have it here
 | 
	
		
			
				|  |  | +    public void testMultiTermVectors() throws Exception {
 | 
	
		
			
				|  |  | +        RestHighLevelClient client = highLevelClient();
 | 
	
		
			
				|  |  | +        CreateIndexRequest authorsRequest = new CreateIndexRequest("authors").mapping("_doc", "user", "type=text");
 | 
	
		
			
				|  |  | +        CreateIndexResponse authorsResponse = client.indices().create(authorsRequest, RequestOptions.DEFAULT);
 | 
	
		
			
				|  |  | +        assertTrue(authorsResponse.isAcknowledged());
 | 
	
		
			
				|  |  | +        client.index(new IndexRequest("index", "_doc", "1").source("user", "kimchy"), RequestOptions.DEFAULT);
 | 
	
		
			
				|  |  | +        client.index(new IndexRequest("index", "_doc", "2").source("user", "s1monw"), RequestOptions.DEFAULT);
 | 
	
		
			
				|  |  | +        Response refreshResponse = client().performRequest(new Request("POST", "/authors/_refresh"));
 | 
	
		
			
				|  |  | +        assertEquals(200, refreshResponse.getStatusLine().getStatusCode());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            // tag::multi-term-vectors-request
 | 
	
		
			
				|  |  | +            MultiTermVectorsRequest request = new MultiTermVectorsRequest(); // <1>
 | 
	
		
			
				|  |  | +            TermVectorsRequest tvrequest1 =
 | 
	
		
			
				|  |  | +                new TermVectorsRequest("authors", "_doc", "1");
 | 
	
		
			
				|  |  | +            tvrequest1.setFields("user");
 | 
	
		
			
				|  |  | +            request.add(tvrequest1); // <2>
 | 
	
		
			
				|  |  | +            TermVectorsRequest tvrequest2 =
 | 
	
		
			
				|  |  | +                new TermVectorsRequest("authors", "_doc");
 | 
	
		
			
				|  |  | +            XContentBuilder docBuilder = XContentFactory.jsonBuilder();
 | 
	
		
			
				|  |  | +            docBuilder.startObject().field("user", "guest-user").endObject();
 | 
	
		
			
				|  |  | +            tvrequest2.setDoc(docBuilder);
 | 
	
		
			
				|  |  | +            request.add(tvrequest2); // <3>
 | 
	
		
			
				|  |  | +            // end::multi-term-vectors-request
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // tag::multi-term-vectors-request-template
 | 
	
		
			
				|  |  | +        TermVectorsRequest tvrequestTemplate =
 | 
	
		
			
				|  |  | +            new TermVectorsRequest("authors", "_doc"); // <1>
 | 
	
		
			
				|  |  | +        tvrequestTemplate.setFields("user");
 | 
	
		
			
				|  |  | +        String[] ids = {"1", "2"};
 | 
	
		
			
				|  |  | +        MultiTermVectorsRequest request =
 | 
	
		
			
				|  |  | +            new MultiTermVectorsRequest(ids, tvrequestTemplate); // <2>
 | 
	
		
			
				|  |  | +        // end::multi-term-vectors-request-template
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // tag::multi-term-vectors-execute
 | 
	
		
			
				|  |  | +        MultiTermVectorsResponse response =
 | 
	
		
			
				|  |  | +            client.mtermvectors(request, RequestOptions.DEFAULT);
 | 
	
		
			
				|  |  | +        // end::multi-term-vectors-execute
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // tag::multi-term-vectors-response
 | 
	
		
			
				|  |  | +        List<TermVectorsResponse> tvresponseList =
 | 
	
		
			
				|  |  | +            response.getTermVectorsResponses(); // <1>
 | 
	
		
			
				|  |  | +        if (tvresponseList != null) {
 | 
	
		
			
				|  |  | +            for (TermVectorsResponse tvresponse : tvresponseList) {
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // end::multi-term-vectors-response
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ActionListener<MultiTermVectorsResponse> listener;
 | 
	
		
			
				|  |  | +        // tag::multi-term-vectors-execute-listener
 | 
	
		
			
				|  |  | +        listener = new ActionListener<MultiTermVectorsResponse>() {
 | 
	
		
			
				|  |  | +            @Override
 | 
	
		
			
				|  |  | +            public void onResponse(MultiTermVectorsResponse mtvResponse) {
 | 
	
		
			
				|  |  | +                // <1>
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            @Override
 | 
	
		
			
				|  |  | +            public void onFailure(Exception e) {
 | 
	
		
			
				|  |  | +                // <2>
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +        // end::multi-term-vectors-execute-listener
 | 
	
		
			
				|  |  | +        CountDownLatch latch = new CountDownLatch(1);
 | 
	
		
			
				|  |  | +        listener = new LatchedActionListener<>(listener, latch);
 | 
	
		
			
				|  |  | +        // tag::multi-term-vectors-execute-async
 | 
	
		
			
				|  |  | +        client.mtermvectorsAsync(
 | 
	
		
			
				|  |  | +            request, RequestOptions.DEFAULT, listener); // <1>
 | 
	
		
			
				|  |  | +        // end::multi-term-vectors-execute-async
 | 
	
		
			
				|  |  | +        assertTrue(latch.await(30L, TimeUnit.SECONDS));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @SuppressWarnings("unused")
 | 
	
		
			
				|  |  |      public void testMultiGet() throws Exception {
 | 
	
		
			
				|  |  |          RestHighLevelClient client = highLevelClient();
 |