Skip to content

Commit 0b60550

Browse files
committed
fix #1566 Filter aggregation does not support raw json, also normalized all jsonconverters on props of type IQueryContainer and IFilterContainer
1 parent 4247a65 commit 0b60550

19 files changed

+40
-3
lines changed

Diff for: src/Nest/DSL/Aggregations/FilterAggregationDescriptor.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Nest.Resolvers.Converters;
23
using Nest.Resolvers.Converters.Aggregations;
34
using Newtonsoft.Json;
45

@@ -8,6 +9,7 @@ namespace Nest
89
[JsonConverter(typeof(FilterAggregatorConverter))]
910
public interface IFilterAggregator : IBucketAggregator
1011
{
12+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<FilterContainer>, CustomJsonConverter>))]
1113
IFilterContainer Filter { get; set; }
1214
}
1315

Diff for: src/Nest/DSL/Aggregations/SignificantTermsAggregationDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public interface ISignificantTermsAggregator : IBucketAggregator
4747
ScriptedHeuristic Script { get; set; }
4848

4949
[JsonProperty("background_filter")]
50+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<FilterContainer>, CustomJsonConverter>))]
5051
IFilterContainer BackgroundFilter { get; set; }
5152

5253
}

Diff for: src/Nest/DSL/CountDescriptor.cs

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using Elasticsearch.Net;
44
using Newtonsoft.Json;
5+
using Nest.Resolvers.Converters;
56

67
namespace Nest
78
{
@@ -10,6 +11,7 @@ public interface ICountRequest : IQueryPath<CountRequestParameters>
1011
{
1112

1213
[JsonProperty("query")]
14+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1315
IQueryContainer Query { get; set; }
1416
}
1517
public interface ICountRequest<T> : ICountRequest

Diff for: src/Nest/DSL/DeleteByQueryDescriptor.cs

+2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
using System.Linq;
44
using Elasticsearch.Net;
55
using Newtonsoft.Json;
6+
using Nest.Resolvers.Converters;
67

78
namespace Nest
89
{
910
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
1011
public interface IDeleteByQueryRequest : IQueryPath<DeleteByQueryRequestParameters>
1112
{
1213
[JsonProperty("query")]
14+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1315
IQueryContainer Query { get; set; }
1416
}
1517

Diff for: src/Nest/DSL/ExplainDescriptor.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using Elasticsearch.Net;
3+
using Nest.Resolvers.Converters;
34
using Newtonsoft.Json;
45

56
namespace Nest
@@ -8,6 +9,7 @@ namespace Nest
89
public interface IExplainRequest : IDocumentOptionalPath<ExplainRequestParameters>
910
{
1011
[JsonProperty("query")]
12+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1113
IQueryContainer Query { get; set; }
1214
}
1315

Diff for: src/Nest/DSL/Facets/FacetContainer.cs

+3
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public interface IFacetContainer
4545
IGeoDistanceFacetRequest GeoDistance { get; set; }
4646

4747
[JsonProperty(PropertyName = "facet_filter")]
48+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<FilterContainer>, CustomJsonConverter>))]
4849
IFilterContainer FacetFilter { get; set; }
4950
}
5051

@@ -69,6 +70,7 @@ public class FacetContainer : IFacetContainer
6970
public IDateHistogramFacetRequest DateHistogram { get; set; }
7071

7172
[JsonProperty(PropertyName = "query")]
73+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
7274
public IQueryContainer Query { get; set; }
7375

7476
[JsonProperty(PropertyName = "filter")]
@@ -85,6 +87,7 @@ public class FacetContainer : IFacetContainer
8587
public IGeoDistanceFacetRequest GeoDistance { get; set; }
8688

8789
[JsonProperty(PropertyName = "facet_filter")]
90+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<FilterContainer>, CustomJsonConverter>))]
8891
public IFilterContainer FacetFilter { get; set; }
8992
}
9093
}

Diff for: src/Nest/DSL/Facets/FacetRequest.cs

+5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1+
using Nest.Resolvers.Converters;
2+
using Newtonsoft.Json;
3+
14
namespace Nest
25
{
36
public interface IFacetRequest
47
{
58
bool? Global { get; set; }
9+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<FilterContainer>, CustomJsonConverter>))]
610
IFilterContainer FacetFilter { get; set; }
711
PropertyPathMarker Nested { get; set; }
812
}
913
public abstract class FacetRequest : IFacetRequest
1014
{
1115
public bool? Global { get; set; }
16+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<FilterContainer>, CustomJsonConverter>))]
1217
public IFilterContainer FacetFilter { get; set; }
1318
public PropertyPathMarker Nested { get; set; }
1419
}

Diff for: src/Nest/DSL/Filter/HasChildFilterDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public interface IHasChildFilter : IFilter
2020
int? MaxChildren { get; set; }
2121

2222
[JsonProperty("query")]
23+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
2324
IQueryContainer Query { get; set; }
2425

2526
[JsonProperty("filter")]

Diff for: src/Nest/DSL/Filter/TermsFilterDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Linq.Expressions;
45
using Nest.Resolvers.Converters.Filters;
56
using Newtonsoft.Json;
67

Diff for: src/Nest/DSL/Query/SpanMultiTermQueryDescriptor.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Newtonsoft.Json;
1+
using Nest.Resolvers.Converters;
2+
using Newtonsoft.Json;
23
using System;
34
using System.Collections.Generic;
45
using System.Linq;
@@ -10,6 +11,7 @@ namespace Nest
1011
public interface ISpanMultiTermQuery : ISpanSubQuery
1112
{
1213
[JsonProperty("match")]
14+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1315
IQueryContainer Match { get; set; }
1416

1517
[JsonProperty("boost")]

Diff for: src/Nest/DSL/Query/TermQueryDescriptor.cs

-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ public void SetFieldName(string fieldName)
104104
}
105105
}
106106

107-
108107
public class TermQueryDescriptor<T> : TermQueryDescriptorBase<TermQueryDescriptor<T>, T>
109108
where T : class
110109
{

Diff for: src/Nest/DSL/Rescore/RescoreQueryDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace Nest
99
public interface IRescoreQuery
1010
{
1111
[JsonProperty("rescore_query")]
12+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1213
IQueryContainer Query { get; set; }
1314

1415
[JsonProperty("query_weight")]

Diff for: src/Nest/DSL/Search/HighlightDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public interface IHighlightRequest
4848
string BoundaryChars { get; set; }
4949

5050
[JsonProperty("highlight_query")]
51+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
5152
IQueryContainer HighlightQuery { get; set; }
5253
}
5354

Diff for: src/Nest/DSL/Search/HighlightFieldDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public interface IHighlightField
5959
IEnumerable<PropertyPathMarker> MatchedFields { get; set; }
6060

6161
[JsonProperty("highlight_query")]
62+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
6263
IQueryContainer HighlightQuery { get; set; }
6364
}
6465

Diff for: src/Nest/DSL/Search/IGlobalInnerHit.cs

+2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
using System.Linq;
44
using Newtonsoft.Json;
55
using System.Linq.Expressions;
6+
using Nest.Resolvers.Converters;
67

78
namespace Nest
89
{
910
public interface IGlobalInnerHit : IInnerHits
1011
{
1112
[JsonProperty(PropertyName = "query")]
13+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1214
IQueryContainer Query { get; set; }
1315

1416
[JsonProperty(PropertyName = "inner_hits")]

Diff for: src/Nest/DSL/Suggest/PhraseSuggestCollateDescriptor.cs

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ namespace Nest
1111
public interface IPhraseSuggestCollate
1212
{
1313
[JsonProperty(PropertyName = "query")]
14+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1415
IQueryContainer Query { get; set; }
1516

1617
[JsonProperty(PropertyName = "filter")]

Diff for: src/Nest/DSL/ValidateQueryDescriptor.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using Elasticsearch.Net;
4+
using Nest.Resolvers.Converters;
45
using Newtonsoft.Json;
56

67
namespace Nest
@@ -9,6 +10,7 @@ namespace Nest
910
public interface IValidateQueryRequest : IQueryPath<ValidateQueryRequestParameters>
1011
{
1112
[JsonProperty("query")]
13+
[JsonConverter(typeof(CompositeJsonConverter<ReadAsTypeConverter<QueryDescriptor<object>>, CustomJsonConverter>))]
1214
IQueryContainer Query { get; set; }
1315
}
1416

Diff for: src/Nest/Resolvers/Converters/Aggregations/FilterAggregatorConverter.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,16 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
1818
{
1919
var f = value as IFilterAggregator;
2020
if (f == null || f.Filter == null) return;
21+
var custom = f.Filter as ICustomJson;
22+
if (custom == null)
23+
return;
2124

22-
serializer.Serialize(writer, f.Filter);
25+
var json = custom.GetCustomJson();
26+
var rawJson = json as RawJson;
27+
if (rawJson != null)
28+
writer.WriteRawValue(rawJson.Data);
29+
else
30+
serializer.Serialize(writer, json);
2331
}
2432

2533
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)

Diff for: src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@
434434
<Compile Include="Reproduce\Reproduce901Tests.cs" />
435435
<Compile Include="Reproduce\Reproduce1320Tests.cs" />
436436
<Compile Include="Reproduce\Reproduce1435Tests.cs" />
437+
<Compile Include="Reproduce\Reproduce1566Tests.cs" />
437438
<Compile Include="Reproduce\Reproduce990Tests.cs" />
438439
<Compile Include="Reproduce\Reproduce974Tests.cs" />
439440
<Compile Include="Reproduce\Reproduce928Tests.cs" />

0 commit comments

Comments
 (0)