Skip to content

Commit 7a5145a

Browse files
committed
Merge pull request #1949 from elastic/fix/simple-fields-overloads
fix #1870 allow .Fields(Fields) everywhere
2 parents 587dd4f + 17346d6 commit 7a5145a

File tree

9 files changed

+39
-22
lines changed

9 files changed

+39
-22
lines changed

src/Nest/Document/Multiple/MultiGet/Request/MultiGetOperation.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public MultiGetOperation(Id id)
2727
public string Routing { get; set; }
2828

2929
bool IMultiGetOperation.CanBeFlattened =>
30-
this.Index == null
30+
this.Index == null
3131
&& this.Type == null
3232
&& this.Routing == null
3333
&& this.Source == null
@@ -106,11 +106,13 @@ public MultiGetOperationDescriptor<T> Source(Func<SourceFilterDescriptor<T>, ISo
106106
public MultiGetOperationDescriptor<T> Routing(string routing) => Assign(a => a.Routing = routing);
107107

108108
/// <summary>
109-
/// Allows to selectively load specific fields for each document
109+
/// Allows to selectively load specific fields for each document
110110
/// represented by a search hit. Defaults to load the internal _source field.
111111
/// </summary>
112112
public MultiGetOperationDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
113113
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
114114

115+
public MultiGetOperationDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
116+
115117
}
116-
}
118+
}

src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorOperation.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public interface IMultiTermVectorOperation
2929
ITermVectorFilter Filter { get; set; }
3030
}
3131

32-
public class MultiTermVectorOperation<T> : IMultiTermVectorOperation
33-
where T : class
32+
public class MultiTermVectorOperation<T> : IMultiTermVectorOperation
33+
where T : class
3434
{
3535
public MultiTermVectorOperation(Id id)
3636
{
@@ -52,7 +52,7 @@ public MultiTermVectorOperation(Id id)
5252
public ITermVectorFilter Filter { get; set; }
5353
}
5454

55-
public class MultiTermVectorOperationDescriptor<T> : DescriptorBase<MultiTermVectorOperationDescriptor<T>, IMultiTermVectorOperation>, IMultiTermVectorOperation
55+
public class MultiTermVectorOperationDescriptor<T> : DescriptorBase<MultiTermVectorOperationDescriptor<T>, IMultiTermVectorOperation>, IMultiTermVectorOperation
5656
where T : class
5757
{
5858
IndexName IMultiTermVectorOperation.Index { get; set; } = typeof (T);
@@ -70,6 +70,8 @@ public class MultiTermVectorOperationDescriptor<T> : DescriptorBase<MultiTermVec
7070
public MultiTermVectorOperationDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
7171
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
7272

73+
public MultiTermVectorOperationDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
74+
7375
public MultiTermVectorOperationDescriptor<T> Id(Id id) => Assign(a=>a.Id = id);
7476

7577
public MultiTermVectorOperationDescriptor<T> Offsets(bool offsets = true) => Assign(a => a.Offsets = offsets);
@@ -82,7 +84,7 @@ public MultiTermVectorOperationDescriptor<T> Fields(Func<FieldsDescriptor<T>, IP
8284

8385
public MultiTermVectorOperationDescriptor<T> FieldStatistics(bool fieldStatistics = true) => Assign(a => a.FieldStatistics = fieldStatistics);
8486

85-
public MultiTermVectorOperationDescriptor<T> Filter(Func<TermVectorFilterDescriptor, ITermVectorFilter> filterSelector) =>
87+
public MultiTermVectorOperationDescriptor<T> Filter(Func<TermVectorFilterDescriptor, ITermVectorFilter> filterSelector) =>
8688
Assign(a => a.Filter = filterSelector?.Invoke(new TermVectorFilterDescriptor()));
8789
}
88-
}
90+
}

src/Nest/QueryDsl/FullText/MultiMatch/MultiMatchQuery.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ public class MultiMatchQuery : QueryBase, IMultiMatchQuery
8585
}
8686

8787
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
88-
public class MultiMatchQueryDescriptor<T>
89-
: QueryDescriptorBase<MultiMatchQueryDescriptor<T>, IMultiMatchQuery>
88+
public class MultiMatchQueryDescriptor<T>
89+
: QueryDescriptorBase<MultiMatchQueryDescriptor<T>, IMultiMatchQuery>
9090
, IMultiMatchQuery where T : class
9191
{
9292
protected override bool Conditionless => MultiMatchQuery.IsConditionless(this);
@@ -110,6 +110,8 @@ public class MultiMatchQueryDescriptor<T>
110110
public MultiMatchQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
111111
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
112112

113+
public MultiMatchQueryDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
114+
113115
public MultiMatchQueryDescriptor<T> Query(string query) => Assign(a => a.Query = query);
114116

115117
public MultiMatchQueryDescriptor<T> Analyzer(string analyzer) => Assign(a => a.Analyzer = analyzer);

src/Nest/QueryDsl/FullText/QueryString/QueryStringQuery.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
124124
}
125125

126126
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
127-
public class QueryStringQueryDescriptor<T>
127+
public class QueryStringQueryDescriptor<T>
128128
: QueryDescriptorBase<QueryStringQueryDescriptor<T>, IQueryStringQuery>
129129
, IQueryStringQuery where T : class
130130
{
@@ -163,6 +163,8 @@ public class QueryStringQueryDescriptor<T>
163163
public QueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
164164
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
165165

166+
public QueryStringQueryDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
167+
166168
public QueryStringQueryDescriptor<T> Query(string query) => Assign(a => a.Query = query);
167169

168170
public QueryStringQueryDescriptor<T> Locale(string locale) => Assign(a => a.Locale = locale);

src/Nest/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringQuery.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public interface ISimpleQueryStringQuery : IQuery
2727

2828
[JsonProperty(PropertyName = "lowercase_expanded_terms")]
2929
bool? LowercaseExpendedTerms { get; set; }
30-
30+
3131
[JsonProperty(PropertyName = "lenient")]
3232
bool? Lenient { get; set; }
3333

@@ -56,8 +56,8 @@ public class SimpleQueryStringQuery : QueryBase, ISimpleQueryStringQuery
5656
internal static bool IsConditionless(ISimpleQueryStringQuery q) => q.Query.IsNullOrEmpty();
5757
}
5858

59-
public class SimpleQueryStringQueryDescriptor<T>
60-
: QueryDescriptorBase<SimpleQueryStringQueryDescriptor<T>, ISimpleQueryStringQuery>
59+
public class SimpleQueryStringQueryDescriptor<T>
60+
: QueryDescriptorBase<SimpleQueryStringQueryDescriptor<T>, ISimpleQueryStringQuery>
6161
, ISimpleQueryStringQuery where T : class
6262
{
6363
protected override bool Conditionless => SimpleQueryStringQuery.IsConditionless(this);
@@ -75,6 +75,8 @@ public class SimpleQueryStringQueryDescriptor<T>
7575
public SimpleQueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
7676
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
7777

78+
public SimpleQueryStringQueryDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
79+
7880
public SimpleQueryStringQueryDescriptor<T> Query(string query) => Assign(a => a.Query = query);
7981

8082
public SimpleQueryStringQueryDescriptor<T> Analyzer(string analyzer) => Assign(a => a.Analyzer = analyzer);

src/Nest/QueryDsl/Specialized/MoreLikeThis/Like/LikeDocument.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public abstract class LikeDocumentBase : ILikeDocument
6262
public class LikeDocument<T> : LikeDocumentBase
6363
{
6464
protected override Type ClrType => typeof(T);
65-
internal LikeDocument() { }
65+
internal LikeDocument() { }
6666

6767
public LikeDocument(Id id)
6868
{
@@ -107,10 +107,12 @@ public LikeDocumentDescriptor()
107107
public LikeDocumentDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
108108
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
109109

110+
public LikeDocumentDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
111+
110112
public LikeDocumentDescriptor<T> Document(T document) => Assign(a => a.Document = document);
111113

112114
public LikeDocumentDescriptor<T> PerFieldAnalyzer(Func<PerFieldAnalyzerDescriptor<T>, IPromise<IPerFieldAnalyzer>> analyzerSelector) =>
113115
Assign(a => a.PerFieldAnalyzer = analyzerSelector?.Invoke(new PerFieldAnalyzerDescriptor<T>())?.Value);
114116

115117
}
116-
}
118+
}

src/Nest/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisQuery.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public interface IMoreLikeThisQuery : IQuery
4141

4242
[JsonProperty(PropertyName = "analyzer")]
4343
string Analyzer { get; set; }
44-
44+
4545
[JsonProperty(PropertyName = "minimum_should_match")]
4646
MinimumShouldMatch MinimumShouldMatch { get; set; }
4747

@@ -77,7 +77,7 @@ public class MoreLikeThisQuery : QueryBase, IMoreLikeThisQuery
7777
internal static bool IsConditionless(IMoreLikeThisQuery q) => q.Fields.IsConditionless() || (!q.Like.HasAny() || q.Like.All(Nest.Like.IsConditionless));
7878
}
7979

80-
public class MoreLikeThisQueryDescriptor<T>
80+
public class MoreLikeThisQueryDescriptor<T>
8181
: QueryDescriptorBase<MoreLikeThisQueryDescriptor<T>, IMoreLikeThisQuery>
8282
, IMoreLikeThisQuery where T : class
8383
{
@@ -100,13 +100,15 @@ public class MoreLikeThisQueryDescriptor<T>
100100
public MoreLikeThisQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
101101
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
102102

103-
public MoreLikeThisQueryDescriptor<T> StopWords(IEnumerable<string> stopWords) =>
103+
public MoreLikeThisQueryDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
104+
105+
public MoreLikeThisQueryDescriptor<T> StopWords(IEnumerable<string> stopWords) =>
104106
Assign(a => a.StopWords = stopWords.ToListOrNullIfEmpty());
105107

106-
public MoreLikeThisQueryDescriptor<T> StopWords(params string[] stopWords) =>
108+
public MoreLikeThisQueryDescriptor<T> StopWords(params string[] stopWords) =>
107109
Assign(a => a.StopWords = stopWords);
108110

109-
public MoreLikeThisQueryDescriptor<T> StopWords(StopWords stopWords) =>
111+
public MoreLikeThisQueryDescriptor<T> StopWords(StopWords stopWords) =>
110112
Assign(a => a.StopWords = stopWords);
111113

112114
public MoreLikeThisQueryDescriptor<T> MaxQueryTerms(int? maxQueryTerms) => Assign(a => a.MaxQueryTerms = maxQueryTerms);

src/Nest/Search/Search/SearchRequest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,8 @@ public SearchDescriptor<T> IndicesBoost(Func<FluentDictionary<IndexName, double>
362362
public SearchDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
363363
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
364364

365+
public SearchDescriptor<T> Fields(Fields fields) => Assign(a => a.Fields = fields);
366+
365367
///<summary>
366368
///A comma-separated list of fields to return as the field data representation of a field for each hit
367369
///</summary>

src/Tests/QueryDsl/FullText/MultiMatch/MultiMatchUsageTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ public MultiMatchWithBoostUsageTests(ReadOnlyCluster i, EndpointUsage usage) : b
107107

108108
protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project> q) => q
109109
.MultiMatch(c => c
110-
.Fields(f => f.Field(p=>p.Description, 2.2).Field("myOtherField^0.3"))
110+
//.Fields(f => f.Field(p=>p.Description, 2.2).Field("myOtherField^0.3"))
111+
.Fields(Field<Project>(p=>p.Description, 2.2).And("myOtherField^0.3"))
111112
.Query("hello world")
112113
);
113114
}

0 commit comments

Comments
 (0)