Skip to content

Commit 87e3f1f

Browse files
committed
Add missing fields on simple query string query
Add `quote_field_suffix` to simple_query_string query Deprecate `lowercase_expanded_terms` and `locale`: elastic/elasticsearch#20208 Add "all field" execution mode to query_string and simple_query_string query: elastic/elasticsearch#20925 Fixes #2792
1 parent 1101a2f commit 87e3f1f

File tree

4 files changed

+69
-13
lines changed

4 files changed

+69
-13
lines changed

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

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public interface IQueryStringQuery : IQuery
2727
bool? AllowLeadingWildcard { get; set; }
2828

2929
[JsonProperty("lowercase_expanded_terms")]
30+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
3031
bool? LowercaseExpendedTerms { get; set; }
3132

3233
[JsonProperty("enable_position_increments")]
@@ -60,6 +61,7 @@ public interface IQueryStringQuery : IQuery
6061
bool? Lenient { get; set; }
6162

6263
[JsonProperty("locale")]
64+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
6365
string Locale { get; set; }
6466

6567
[JsonProperty("time_zone")]
@@ -93,6 +95,12 @@ public interface IQueryStringQuery : IQuery
9395

9496
[JsonProperty("escape")]
9597
bool? Escape { get; set; }
98+
99+
[JsonProperty("all_fields")]
100+
bool? AllFields { get; set; }
101+
102+
[JsonProperty("split_on_whitespace")]
103+
bool? SplitOnWhitespace { get; set; }
96104
}
97105

98106
public class QueryStringQuery : QueryBase, IQueryStringQuery
@@ -101,20 +109,21 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
101109
public int? FuzzyMaxExpansions { get; set; }
102110
public Fuzziness Fuzziness { get; set; }
103111
public MinimumShouldMatch MinimumShouldMatch { get; set; }
112+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
104113
public string Locale { get; set; }
105114
[Obsolete("Use MultiTermQueryRewrite")]
106115
public RewriteMultiTerm? Rewrite
107116
{
108-
get { return MultiTermQueryRewrite?.Rewrite; }
109-
set { MultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value); }
117+
get => MultiTermQueryRewrite?.Rewrite;
118+
set => MultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value);
110119
}
111120
public MultiTermQueryRewrite MultiTermQueryRewrite { get; set; }
112121

113122
[Obsolete("Use FuzzyMultiTermQueryRewrite")]
114123
public RewriteMultiTerm? FuzzyRewrite
115124
{
116-
get { return FuzzyMultiTermQueryRewrite?.Rewrite; }
117-
set { FuzzyMultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value); }
125+
get => FuzzyMultiTermQueryRewrite?.Rewrite;
126+
set => FuzzyMultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value);
118127
}
119128
public MultiTermQueryRewrite FuzzyMultiTermQueryRewrite { get; set; }
120129
public string QuoteFieldSuffix { get; set; }
@@ -127,6 +136,7 @@ public RewriteMultiTerm? FuzzyRewrite
127136
public string Analyzer { get; set; }
128137
public string QuoteAnalyzer { get; set; }
129138
public bool? AllowLeadingWildcard { get; set; }
139+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
130140
public bool? LowercaseExpendedTerms { get; set; }
131141
public bool? EnablePositionIncrements { get; set; }
132142
public int? FuzzyPrefixLength { get; set; }
@@ -137,6 +147,8 @@ public RewriteMultiTerm? FuzzyRewrite
137147
public bool? UseDisMax { get; set; }
138148
public double? TieBreaker { get; set; }
139149
public int? MaximumDeterminizedStates { get; set; }
150+
public bool? AllFields { get; set; }
151+
public bool? SplitOnWhitespace { get; set; }
140152

141153
internal override void InternalWrapInContainer(IQueryContainer c) => c.QueryString = this;
142154
internal static bool IsConditionless(IQueryStringQuery q) => q.Query.IsNullOrEmpty();
@@ -150,6 +162,7 @@ public class QueryStringQueryDescriptor<T>
150162
protected override bool Conditionless => QueryStringQuery.IsConditionless(this);
151163

152164
string IQueryStringQuery.Query { get; set; }
165+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
153166
string IQueryStringQuery.Locale { get; set; }
154167
string IQueryStringQuery.Timezone { get; set; }
155168
Field IQueryStringQuery.DefaultField { get; set; }
@@ -158,6 +171,7 @@ public class QueryStringQueryDescriptor<T>
158171
string IQueryStringQuery.Analyzer { get; set; }
159172
string IQueryStringQuery.QuoteAnalyzer { get; set; }
160173
bool? IQueryStringQuery.AllowLeadingWildcard { get; set; }
174+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
161175
bool? IQueryStringQuery.LowercaseExpendedTerms { get; set; }
162176
bool? IQueryStringQuery.EnablePositionIncrements { get; set; }
163177
int? IQueryStringQuery.FuzzyMaxExpansions { get; set; }
@@ -174,19 +188,21 @@ public class QueryStringQueryDescriptor<T>
174188
[Obsolete("Use FuzzyMultiTermQueryRewrite")]
175189
RewriteMultiTerm? IQueryStringQuery.FuzzyRewrite
176190
{
177-
get { return Self.FuzzyMultiTermQueryRewrite?.Rewrite; }
178-
set { Self.FuzzyMultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value); }
191+
get => Self.FuzzyMultiTermQueryRewrite?.Rewrite;
192+
set => Self.FuzzyMultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value);
179193
}
180194
MultiTermQueryRewrite IQueryStringQuery.FuzzyMultiTermQueryRewrite { get; set; }
181195
[Obsolete("Use MultiTermQueryRewrite")]
182196
RewriteMultiTerm? IQueryStringQuery.Rewrite
183197
{
184-
get { return Self.MultiTermQueryRewrite?.Rewrite; }
185-
set { Self.MultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value); }
198+
get => Self.MultiTermQueryRewrite?.Rewrite;
199+
set => Self.MultiTermQueryRewrite = value == null ? null : new MultiTermQueryRewrite(value.Value);
186200
}
187201
MultiTermQueryRewrite IQueryStringQuery.MultiTermQueryRewrite { get; set; }
188202
string IQueryStringQuery.QuoteFieldSuffix { get; set; }
189203
bool? IQueryStringQuery.Escape { get; set; }
204+
bool? IQueryStringQuery.AllFields { get; set; }
205+
bool? IQueryStringQuery.SplitOnWhitespace { get; set; }
190206

191207
public QueryStringQueryDescriptor<T> DefaultField(Field field) => Assign(a => a.DefaultField = field);
192208
public QueryStringQueryDescriptor<T> DefaultField(Expression<Func<T, object>> field) => Assign(a => a.DefaultField = field);
@@ -198,6 +214,7 @@ public QueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<F
198214

199215
public QueryStringQueryDescriptor<T> Query(string query) => Assign(a => a.Query = query);
200216

217+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
201218
public QueryStringQueryDescriptor<T> Locale(string locale) => Assign(a => a.Locale = locale);
202219

203220
public QueryStringQueryDescriptor<T> Timezone(string timezone) => Assign(a => a.Timezone = timezone);
@@ -211,6 +228,7 @@ public QueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<F
211228
public QueryStringQueryDescriptor<T> AllowLeadingWildcard(bool? allowLeadingWildcard = true) =>
212229
Assign(a => a.AllowLeadingWildcard = allowLeadingWildcard);
213230

231+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
214232
public QueryStringQueryDescriptor<T> LowercaseExpendedTerms(bool? lowercaseExpendedTerms = true) =>
215233
Assign(a => a.LowercaseExpendedTerms = lowercaseExpendedTerms);
216234

@@ -260,11 +278,17 @@ public QueryStringQueryDescriptor<T> Rewrite(RewriteMultiTerm? rewrite) =>
260278
: null;
261279
});
262280

263-
public QueryStringQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) => Assign(a => Self.MultiTermQueryRewrite = rewrite);
281+
public QueryStringQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) =>
282+
Assign(a => Self.MultiTermQueryRewrite = rewrite);
264283

265-
public QueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) => Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);
284+
public QueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) =>
285+
Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);
266286

267287
public QueryStringQueryDescriptor<T> Escape(bool? escape = true) => Assign(a => a.Escape = escape);
268288

289+
public QueryStringQueryDescriptor<T> AllFields(bool? allFields = true) => Assign(a => a.AllFields = allFields);
290+
291+
public QueryStringQueryDescriptor<T> SplitOnWhitespace(bool? splitOnWhitespace = true) =>
292+
Assign(a => a.SplitOnWhitespace = splitOnWhitespace);
269293
}
270294
}

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ public interface ISimpleQueryStringQuery : IQuery
2323
SimpleQueryStringFlags? Flags { get; set; }
2424

2525
[JsonProperty(PropertyName = "locale")]
26+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
2627
string Locale { get; set; }
2728

2829
[JsonProperty(PropertyName = "lowercase_expanded_terms")]
30+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
2931
bool? LowercaseExpendedTerms { get; set; }
3032

3133
[JsonProperty(PropertyName = "lenient")]
@@ -36,6 +38,12 @@ public interface ISimpleQueryStringQuery : IQuery
3638

3739
[JsonProperty("minimum_should_match")]
3840
MinimumShouldMatch MinimumShouldMatch { get; set; }
41+
42+
[JsonProperty("quote_field_suffix")]
43+
string QuoteFieldSuffix { get; set; }
44+
45+
[JsonProperty("all_fields")]
46+
bool? AllFields { get; set; }
3947
}
4048

4149
public class SimpleQueryStringQuery : QueryBase, ISimpleQueryStringQuery
@@ -46,11 +54,15 @@ public class SimpleQueryStringQuery : QueryBase, ISimpleQueryStringQuery
4654
public string Analyzer { get; set; }
4755
public Operator? DefaultOperator { get; set; }
4856
public SimpleQueryStringFlags? Flags { get; set; }
57+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
4958
public string Locale { get; set; }
59+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
5060
public bool? LowercaseExpendedTerms { get; set; }
5161
public bool? Lenient { get; set; }
5262
public bool? AnalyzeWildcard { get; set; }
5363
public MinimumShouldMatch MinimumShouldMatch { get; set; }
64+
public string QuoteFieldSuffix { get; set; }
65+
public bool? AllFields { get; set; }
5466

5567
internal override void InternalWrapInContainer(IQueryContainer c) => c.SimpleQueryString = this;
5668
internal static bool IsConditionless(ISimpleQueryStringQuery q) => q.Query.IsNullOrEmpty();
@@ -66,11 +78,15 @@ public class SimpleQueryStringQueryDescriptor<T>
6678
string ISimpleQueryStringQuery.Analyzer { get; set; }
6779
Operator? ISimpleQueryStringQuery.DefaultOperator { get; set; }
6880
SimpleQueryStringFlags? ISimpleQueryStringQuery.Flags { get; set; }
81+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
6982
string ISimpleQueryStringQuery.Locale { get; set; }
83+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
7084
bool? ISimpleQueryStringQuery.LowercaseExpendedTerms { get; set; }
7185
bool? ISimpleQueryStringQuery.AnalyzeWildcard { get; set; }
7286
bool? ISimpleQueryStringQuery.Lenient { get; set; }
7387
MinimumShouldMatch ISimpleQueryStringQuery.MinimumShouldMatch { get; set; }
88+
string ISimpleQueryStringQuery.QuoteFieldSuffix { get; set; }
89+
bool? ISimpleQueryStringQuery.AllFields { get; set; }
7490

7591
public SimpleQueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<Fields>> fields) =>
7692
Assign(a => a.Fields = fields?.Invoke(new FieldsDescriptor<T>())?.Value);
@@ -85,8 +101,10 @@ public SimpleQueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPro
85101

86102
public SimpleQueryStringQueryDescriptor<T> Flags(SimpleQueryStringFlags? flags) => Assign(a => a.Flags = flags);
87103

104+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
88105
public SimpleQueryStringQueryDescriptor<T> Locale(string locale) => Assign(a => a.Locale = locale);
89106

107+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
90108
public SimpleQueryStringQueryDescriptor<T> LowercaseExpendedTerms(bool? lowercaseExpendedTerms = true) =>
91109
Assign(a => a.LowercaseExpendedTerms = lowercaseExpendedTerms);
92110

@@ -98,5 +116,10 @@ public SimpleQueryStringQueryDescriptor<T> AnalyzeWildcard(bool? analyzeWildcard
98116
public SimpleQueryStringQueryDescriptor<T> MinimumShouldMatch(MinimumShouldMatch minimumShouldMatch) =>
99117
Assign(a => a.MinimumShouldMatch = minimumShouldMatch);
100118

101-
}
119+
public SimpleQueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) =>
120+
Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);
121+
122+
public SimpleQueryStringQueryDescriptor<T> AllFields(bool? allFields = true) =>
123+
Assign(a => a.AllFields = allFields);
124+
}
102125
}

src/Tests/QueryDsl/FullText/QueryString/QueryStringUsageTests.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ public QueryStringUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base(i, u
5757
AllowLeadingWildcard = true,
5858
AutoGeneratePhraseQueries = true,
5959
MaximumDeterminizedStates = 2,
60+
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
6061
LowercaseExpendedTerms = true,
62+
Locale = "en_US",
63+
#pragma warning restore 618 // usage of lowercase_expanded_terms and locale
6164
EnablePositionIncrements = true,
6265
Escape = true,
6366
UseDisMax = true,
@@ -70,12 +73,12 @@ public QueryStringUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base(i, u
7073
AnalyzeWildcard = true,
7174
MinimumShouldMatch = 2,
7275
QuoteFieldSuffix = "'",
73-
Lenient = true,
74-
Locale = "en_US",
76+
Lenient = true,
7577
Timezone = "root"
7678
};
7779

7880
protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project> q) => q
81+
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
7982
.QueryString(c => c
8083
.Name("named_query")
8184
.Boost(1.1)
@@ -105,6 +108,7 @@ protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project>
105108
.Locale("en_US")
106109
.Timezone("root")
107110
);
111+
#pragma warning restore 618 // usage of lowercase_expanded_terms and locale
108112

109113
protected override ConditionlessWhen ConditionlessWhen => new ConditionlessWhen<IQueryStringQuery>(a => a.QueryString)
110114
{

src/Tests/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringUsageTests.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Tests.Framework.MockData;
55
using static Nest.Infer;
66

7+
78
namespace Tests.QueryDsl.FullText.SimpleQueryString
89
{
910
public class SimpleQueryStringUsageTests : QueryDslUsageTestsBase
@@ -38,14 +39,17 @@ public SimpleQueryStringUsageTests(ReadOnlyCluster i, EndpointUsage usage) : bas
3839
Analyzer = "standard",
3940
DefaultOperator = Operator.Or,
4041
Flags = SimpleQueryStringFlags.And|SimpleQueryStringFlags.Near,
42+
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
4143
Locale = "en_US",
4244
LowercaseExpendedTerms = true,
45+
#pragma warning restore 618
4346
Lenient = true,
4447
AnalyzeWildcard = true,
4548
MinimumShouldMatch = "30%"
4649
};
4750

4851
protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project> q) => q
52+
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
4953
.SimpleQueryString(c => c
5054
.Name("named_query")
5155
.Boost(1.1)
@@ -60,6 +64,7 @@ protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project>
6064
.AnalyzeWildcard()
6165
.MinimumShouldMatch("30%")
6266
);
67+
#pragma warning restore 618
6368

6469
protected override ConditionlessWhen ConditionlessWhen => new ConditionlessWhen<ISimpleQueryStringQuery>(a => a.SimpleQueryString)
6570
{

0 commit comments

Comments
 (0)