diff --git a/src/Nest/Document/Multiple/MultiGet/Request/MultiGetOperation.cs b/src/Nest/Document/Multiple/MultiGet/Request/MultiGetOperation.cs index 4b89e2b19a1..e9a1eaaadeb 100644 --- a/src/Nest/Document/Multiple/MultiGet/Request/MultiGetOperation.cs +++ b/src/Nest/Document/Multiple/MultiGet/Request/MultiGetOperation.cs @@ -27,7 +27,7 @@ public MultiGetOperation(Id id) public string Routing { get; set; } bool IMultiGetOperation.CanBeFlattened => - this.Index == null + this.Index == null && this.Type == null && this.Routing == null && this.Source == null @@ -106,11 +106,13 @@ public MultiGetOperationDescriptor Source(Func, ISo public MultiGetOperationDescriptor Routing(string routing) => Assign(a => a.Routing = routing); /// - /// Allows to selectively load specific fields for each document + /// Allows to selectively load specific fields for each document /// represented by a search hit. Defaults to load the internal _source field. /// public MultiGetOperationDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public MultiGetOperationDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + } -} \ No newline at end of file +} diff --git a/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorOperation.cs b/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorOperation.cs index ac002499012..0c3097d1cde 100644 --- a/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorOperation.cs +++ b/src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorOperation.cs @@ -29,8 +29,8 @@ public interface IMultiTermVectorOperation ITermVectorFilter Filter { get; set; } } - public class MultiTermVectorOperation : IMultiTermVectorOperation - where T : class + public class MultiTermVectorOperation : IMultiTermVectorOperation + where T : class { public MultiTermVectorOperation(Id id) { @@ -52,7 +52,7 @@ public MultiTermVectorOperation(Id id) public ITermVectorFilter Filter { get; set; } } - public class MultiTermVectorOperationDescriptor : DescriptorBase, IMultiTermVectorOperation>, IMultiTermVectorOperation + public class MultiTermVectorOperationDescriptor : DescriptorBase, IMultiTermVectorOperation>, IMultiTermVectorOperation where T : class { IndexName IMultiTermVectorOperation.Index { get; set; } = typeof (T); @@ -70,6 +70,8 @@ public class MultiTermVectorOperationDescriptor : DescriptorBase Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public MultiTermVectorOperationDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + public MultiTermVectorOperationDescriptor Id(Id id) => Assign(a=>a.Id = id); public MultiTermVectorOperationDescriptor Offsets(bool offsets = true) => Assign(a => a.Offsets = offsets); @@ -82,7 +84,7 @@ public MultiTermVectorOperationDescriptor Fields(Func, IP public MultiTermVectorOperationDescriptor FieldStatistics(bool fieldStatistics = true) => Assign(a => a.FieldStatistics = fieldStatistics); - public MultiTermVectorOperationDescriptor Filter(Func filterSelector) => + public MultiTermVectorOperationDescriptor Filter(Func filterSelector) => Assign(a => a.Filter = filterSelector?.Invoke(new TermVectorFilterDescriptor())); } -} \ No newline at end of file +} diff --git a/src/Nest/QueryDsl/FullText/MultiMatch/MultiMatchQuery.cs b/src/Nest/QueryDsl/FullText/MultiMatch/MultiMatchQuery.cs index a63ccf5434a..b469cbc6e32 100644 --- a/src/Nest/QueryDsl/FullText/MultiMatch/MultiMatchQuery.cs +++ b/src/Nest/QueryDsl/FullText/MultiMatch/MultiMatchQuery.cs @@ -85,8 +85,8 @@ public class MultiMatchQuery : QueryBase, IMultiMatchQuery } [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - public class MultiMatchQueryDescriptor - : QueryDescriptorBase, IMultiMatchQuery> + public class MultiMatchQueryDescriptor + : QueryDescriptorBase, IMultiMatchQuery> , IMultiMatchQuery where T : class { protected override bool Conditionless => MultiMatchQuery.IsConditionless(this); @@ -110,6 +110,8 @@ public class MultiMatchQueryDescriptor public MultiMatchQueryDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public MultiMatchQueryDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + public MultiMatchQueryDescriptor Query(string query) => Assign(a => a.Query = query); public MultiMatchQueryDescriptor Analyzer(string analyzer) => Assign(a => a.Analyzer = analyzer); diff --git a/src/Nest/QueryDsl/FullText/QueryString/QueryStringQuery.cs b/src/Nest/QueryDsl/FullText/QueryString/QueryStringQuery.cs index 2f403b59dfa..f157e2c4690 100644 --- a/src/Nest/QueryDsl/FullText/QueryString/QueryStringQuery.cs +++ b/src/Nest/QueryDsl/FullText/QueryString/QueryStringQuery.cs @@ -124,7 +124,7 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery } [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - public class QueryStringQueryDescriptor + public class QueryStringQueryDescriptor : QueryDescriptorBase, IQueryStringQuery> , IQueryStringQuery where T : class { @@ -163,6 +163,8 @@ public class QueryStringQueryDescriptor public QueryStringQueryDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public QueryStringQueryDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + public QueryStringQueryDescriptor Query(string query) => Assign(a => a.Query = query); public QueryStringQueryDescriptor Locale(string locale) => Assign(a => a.Locale = locale); diff --git a/src/Nest/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringQuery.cs b/src/Nest/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringQuery.cs index 1667d4bc697..e1e09a67455 100644 --- a/src/Nest/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringQuery.cs +++ b/src/Nest/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringQuery.cs @@ -27,7 +27,7 @@ public interface ISimpleQueryStringQuery : IQuery [JsonProperty(PropertyName = "lowercase_expanded_terms")] bool? LowercaseExpendedTerms { get; set; } - + [JsonProperty(PropertyName = "lenient")] bool? Lenient { get; set; } @@ -56,8 +56,8 @@ public class SimpleQueryStringQuery : QueryBase, ISimpleQueryStringQuery internal static bool IsConditionless(ISimpleQueryStringQuery q) => q.Query.IsNullOrEmpty(); } - public class SimpleQueryStringQueryDescriptor - : QueryDescriptorBase, ISimpleQueryStringQuery> + public class SimpleQueryStringQueryDescriptor + : QueryDescriptorBase, ISimpleQueryStringQuery> , ISimpleQueryStringQuery where T : class { protected override bool Conditionless => SimpleQueryStringQuery.IsConditionless(this); @@ -75,6 +75,8 @@ public class SimpleQueryStringQueryDescriptor public SimpleQueryStringQueryDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public SimpleQueryStringQueryDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + public SimpleQueryStringQueryDescriptor Query(string query) => Assign(a => a.Query = query); public SimpleQueryStringQueryDescriptor Analyzer(string analyzer) => Assign(a => a.Analyzer = analyzer); diff --git a/src/Nest/QueryDsl/Specialized/MoreLikeThis/Like/LikeDocument.cs b/src/Nest/QueryDsl/Specialized/MoreLikeThis/Like/LikeDocument.cs index 580771d6506..cd57cf7cf3e 100644 --- a/src/Nest/QueryDsl/Specialized/MoreLikeThis/Like/LikeDocument.cs +++ b/src/Nest/QueryDsl/Specialized/MoreLikeThis/Like/LikeDocument.cs @@ -62,7 +62,7 @@ public abstract class LikeDocumentBase : ILikeDocument public class LikeDocument : LikeDocumentBase { protected override Type ClrType => typeof(T); - internal LikeDocument() { } + internal LikeDocument() { } public LikeDocument(Id id) { @@ -107,10 +107,12 @@ public LikeDocumentDescriptor() public LikeDocumentDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public LikeDocumentDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + public LikeDocumentDescriptor Document(T document) => Assign(a => a.Document = document); public LikeDocumentDescriptor PerFieldAnalyzer(Func, IPromise> analyzerSelector) => Assign(a => a.PerFieldAnalyzer = analyzerSelector?.Invoke(new PerFieldAnalyzerDescriptor())?.Value); } -} \ No newline at end of file +} diff --git a/src/Nest/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisQuery.cs b/src/Nest/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisQuery.cs index 530df80edb4..735be254d08 100644 --- a/src/Nest/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisQuery.cs +++ b/src/Nest/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisQuery.cs @@ -41,7 +41,7 @@ public interface IMoreLikeThisQuery : IQuery [JsonProperty(PropertyName = "analyzer")] string Analyzer { get; set; } - + [JsonProperty(PropertyName = "minimum_should_match")] MinimumShouldMatch MinimumShouldMatch { get; set; } @@ -77,7 +77,7 @@ public class MoreLikeThisQuery : QueryBase, IMoreLikeThisQuery internal static bool IsConditionless(IMoreLikeThisQuery q) => q.Fields.IsConditionless() || (!q.Like.HasAny() || q.Like.All(Nest.Like.IsConditionless)); } - public class MoreLikeThisQueryDescriptor + public class MoreLikeThisQueryDescriptor : QueryDescriptorBase, IMoreLikeThisQuery> , IMoreLikeThisQuery where T : class { @@ -100,13 +100,15 @@ public class MoreLikeThisQueryDescriptor public MoreLikeThisQueryDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); - public MoreLikeThisQueryDescriptor StopWords(IEnumerable stopWords) => + public MoreLikeThisQueryDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + + public MoreLikeThisQueryDescriptor StopWords(IEnumerable stopWords) => Assign(a => a.StopWords = stopWords.ToListOrNullIfEmpty()); - public MoreLikeThisQueryDescriptor StopWords(params string[] stopWords) => + public MoreLikeThisQueryDescriptor StopWords(params string[] stopWords) => Assign(a => a.StopWords = stopWords); - public MoreLikeThisQueryDescriptor StopWords(StopWords stopWords) => + public MoreLikeThisQueryDescriptor StopWords(StopWords stopWords) => Assign(a => a.StopWords = stopWords); public MoreLikeThisQueryDescriptor MaxQueryTerms(int? maxQueryTerms) => Assign(a => a.MaxQueryTerms = maxQueryTerms); diff --git a/src/Nest/Search/Search/SearchRequest.cs b/src/Nest/Search/Search/SearchRequest.cs index b57c3269b0b..b2187e6b5a4 100644 --- a/src/Nest/Search/Search/SearchRequest.cs +++ b/src/Nest/Search/Search/SearchRequest.cs @@ -362,6 +362,8 @@ public SearchDescriptor IndicesBoost(Func public SearchDescriptor Fields(Func, IPromise> fields) => Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor())?.Value); + public SearchDescriptor Fields(Fields fields) => Assign(a => a.Fields = fields); + /// ///A comma-separated list of fields to return as the field data representation of a field for each hit /// diff --git a/src/Tests/QueryDsl/FullText/MultiMatch/MultiMatchUsageTests.cs b/src/Tests/QueryDsl/FullText/MultiMatch/MultiMatchUsageTests.cs index c159f617258..b6b9459f3af 100644 --- a/src/Tests/QueryDsl/FullText/MultiMatch/MultiMatchUsageTests.cs +++ b/src/Tests/QueryDsl/FullText/MultiMatch/MultiMatchUsageTests.cs @@ -107,7 +107,8 @@ public MultiMatchWithBoostUsageTests(ReadOnlyCluster i, EndpointUsage usage) : b protected override QueryContainer QueryFluent(QueryContainerDescriptor q) => q .MultiMatch(c => c - .Fields(f => f.Field(p=>p.Description, 2.2).Field("myOtherField^0.3")) + //.Fields(f => f.Field(p=>p.Description, 2.2).Field("myOtherField^0.3")) + .Fields(Field(p=>p.Description, 2.2).And("myOtherField^0.3")) .Query("hello world") ); }