diff --git a/src/Nest/CommonAbstractions/Response/ResponseBase.cs b/src/Nest/CommonAbstractions/Response/ResponseBase.cs
index af309a13e07..20376cd2776 100644
--- a/src/Nest/CommonAbstractions/Response/ResponseBase.cs
+++ b/src/Nest/CommonAbstractions/Response/ResponseBase.cs
@@ -1,6 +1,4 @@
using System;
-using System.Diagnostics;
-using System.Linq;
using System.Text;
using Elasticsearch.Net;
using Newtonsoft.Json;
diff --git a/src/Nest/Document/Multiple/MultiTermVectors/ElasticClient-MultiTermVectors.cs b/src/Nest/Document/Multiple/MultiTermVectors/ElasticClient-MultiTermVectors.cs
index cad267b5e19..13e09311bfd 100644
--- a/src/Nest/Document/Multiple/MultiTermVectors/ElasticClient-MultiTermVectors.cs
+++ b/src/Nest/Document/Multiple/MultiTermVectors/ElasticClient-MultiTermVectors.cs
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
using System.Threading.Tasks;
using Elasticsearch.Net;
@@ -30,10 +31,10 @@ public IMultiTermVectorsResponse MultiTermVectors(Func
- public IMultiTermVectorsResponse MultiTermVectors(IMultiTermVectorsRequest request) =>
+ public IMultiTermVectorsResponse MultiTermVectors(IMultiTermVectorsRequest request) =>
this.Dispatcher.Dispatch(
request,
- this.LowLevelDispatch.MtermvectorsDispatch
+ (p, d) => this.LowLevelDispatch.MtermvectorsDispatch(SetCallDetailsOnTermVectors(p), d)
);
///
@@ -41,10 +42,26 @@ public Task MultiTermVectorsAsync(Func
- public Task MultiTermVectorsAsync(IMultiTermVectorsRequest request) =>
+ public Task MultiTermVectorsAsync(IMultiTermVectorsRequest request) =>
this.Dispatcher.DispatchAsync(
request,
- this.LowLevelDispatch.MtermvectorsDispatchAsync
+ (p, d) => this.LowLevelDispatch.MtermvectorsDispatchAsync(SetCallDetailsOnTermVectors(p), d)
);
+
+ private IMultiTermVectorsRequest SetCallDetailsOnTermVectors(IMultiTermVectorsRequest request)
+ {
+ request.RequestParameters.DeserializationOverride((details, stream) =>
+ {
+ var response = this.Serializer.Deserialize(stream);
+
+ // This is not needed in 5.0 as MultiTermVectorsResponse does not use
+ // TermVectors response as the collection type
+ foreach (IResponse termVectorsResponse in response.Documents)
+ termVectorsResponse.CallDetails = details;
+
+ return response;
+ });
+ return request;
+ }
}
}
diff --git a/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorsResponse.cs b/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorsResponse.cs
index d2fb5189e93..9107953b7a4 100644
--- a/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorsResponse.cs
+++ b/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorsResponse.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using Newtonsoft.Json;
namespace Nest
@@ -11,8 +12,6 @@ public interface IMultiTermVectorsResponse : IResponse
[JsonObject]
public class MultiTermVectorsResponse : ResponseBase, IMultiTermVectorsResponse
{
- // TODO For 3.0 we should create a separate term vector object rather than using TermVectorsResponse
- // since it contains general response data that isn't relevant (i.e. ApiCall, StatusCode, etc...)
[JsonProperty("docs")]
public IEnumerable Documents { get; internal set; } = new List();
}
diff --git a/src/Tests/Document/Multiple/MultiTermVectors/MultiTermVectorsApiTests.cs b/src/Tests/Document/Multiple/MultiTermVectors/MultiTermVectorsApiTests.cs
index c2eeb8b6086..936f3fd1dfb 100644
--- a/src/Tests/Document/Multiple/MultiTermVectors/MultiTermVectorsApiTests.cs
+++ b/src/Tests/Document/Multiple/MultiTermVectors/MultiTermVectorsApiTests.cs
@@ -55,6 +55,8 @@ protected override void ExpectResponse(IMultiTermVectorsResponse response)
{
response.ShouldBeValid();
response.Documents.Should().NotBeEmpty().And.HaveCount(2).And.OnlyContain(d => d.Found);
+ response.Documents.All(r => r.IsValid).Should().BeTrue();
+
var termvectorDoc = response.Documents.FirstOrDefault(d => d.TermVectors.Count > 0);
termvectorDoc.Should().NotBeNull();