Skip to content

Commit 78fa2fe

Browse files
russcamawelburn
authored and
awelburn
committed
Add missing fields on simple query string query (elastic#2795)
* 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 elastic#2792 * Convert to property expressions (cherry picked from commit bef4b9d)
1 parent f8c866b commit 78fa2fe

File tree

6 files changed

+63
-8
lines changed

6 files changed

+63
-8
lines changed

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

Lines changed: 24 additions & 1 deletion
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")]
@@ -85,6 +87,12 @@ public interface IQueryStringQuery : IQuery
8587

8688
[JsonProperty("escape")]
8789
bool? Escape { get; set; }
90+
91+
[JsonProperty("all_fields")]
92+
bool? AllFields { get; set; }
93+
94+
[JsonProperty("split_on_whitespace")]
95+
bool? SplitOnWhitespace { get; set; }
8896
}
8997

9098
public class QueryStringQuery : QueryBase, IQueryStringQuery
@@ -93,6 +101,7 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
93101
public int? FuzzyMaxExpansions { get; set; }
94102
public Fuzziness Fuzziness { get; set; }
95103
public MinimumShouldMatch MinimumShouldMatch { get; set; }
104+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
96105
public string Locale { get; set; }
97106
public MultiTermQueryRewrite Rewrite { get; set; }
98107
public MultiTermQueryRewrite FuzzyRewrite { get; set; }
@@ -106,6 +115,7 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
106115
public string Analyzer { get; set; }
107116
public string QuoteAnalyzer { get; set; }
108117
public bool? AllowLeadingWildcard { get; set; }
118+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
109119
public bool? LowercaseExpendedTerms { get; set; }
110120
public bool? EnablePositionIncrements { get; set; }
111121
public int? FuzzyPrefixLength { get; set; }
@@ -116,6 +126,8 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
116126
public bool? UseDisMax { get; set; }
117127
public double? TieBreaker { get; set; }
118128
public int? MaximumDeterminizedStates { get; set; }
129+
public bool? AllFields { get; set; }
130+
public bool? SplitOnWhitespace { get; set; }
119131

120132
internal override void InternalWrapInContainer(IQueryContainer c) => c.QueryString = this;
121133
internal static bool IsConditionless(IQueryStringQuery q) => q.Query.IsNullOrEmpty();
@@ -129,6 +141,7 @@ public class QueryStringQueryDescriptor<T>
129141
protected override bool Conditionless => QueryStringQuery.IsConditionless(this);
130142

131143
string IQueryStringQuery.Query { get; set; }
144+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
132145
string IQueryStringQuery.Locale { get; set; }
133146
string IQueryStringQuery.Timezone { get; set; }
134147
Field IQueryStringQuery.DefaultField { get; set; }
@@ -137,6 +150,7 @@ public class QueryStringQueryDescriptor<T>
137150
string IQueryStringQuery.Analyzer { get; set; }
138151
string IQueryStringQuery.QuoteAnalyzer { get; set; }
139152
bool? IQueryStringQuery.AllowLeadingWildcard { get; set; }
153+
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
140154
bool? IQueryStringQuery.LowercaseExpendedTerms { get; set; }
141155
bool? IQueryStringQuery.EnablePositionIncrements { get; set; }
142156
int? IQueryStringQuery.FuzzyMaxExpansions { get; set; }
@@ -154,6 +168,8 @@ public class QueryStringQueryDescriptor<T>
154168
MultiTermQueryRewrite IQueryStringQuery.Rewrite { get; set; }
155169
string IQueryStringQuery.QuoteFieldSuffix { get; set; }
156170
bool? IQueryStringQuery.Escape { get; set; }
171+
bool? IQueryStringQuery.AllFields { get; set; }
172+
bool? IQueryStringQuery.SplitOnWhitespace { get; set; }
157173

158174
public QueryStringQueryDescriptor<T> DefaultField(Field field) => Assign(a => a.DefaultField = field);
159175
public QueryStringQueryDescriptor<T> DefaultField(Expression<Func<T, object>> field) => Assign(a => a.DefaultField = field);
@@ -165,6 +181,7 @@ public QueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<F
165181

166182
public QueryStringQueryDescriptor<T> Query(string query) => Assign(a => a.Query = query);
167183

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

170187
public QueryStringQueryDescriptor<T> Timezone(string timezone) => Assign(a => a.Timezone = timezone);
@@ -178,6 +195,7 @@ public QueryStringQueryDescriptor<T> Fields(Func<FieldsDescriptor<T>, IPromise<F
178195
public QueryStringQueryDescriptor<T> AllowLeadingWildcard(bool? allowLeadingWildcard = true) =>
179196
Assign(a => a.AllowLeadingWildcard = allowLeadingWildcard);
180197

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

@@ -211,9 +229,14 @@ public QueryStringQueryDescriptor<T> AutoGeneratePhraseQueries(bool? autoGenerat
211229

212230
public QueryStringQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) => Assign(a => Self.Rewrite = rewrite);
213231

214-
public QueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) => Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);
232+
public QueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) =>
233+
Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);
215234

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

237+
public QueryStringQueryDescriptor<T> AllFields(bool? allFields = true) => Assign(a => a.AllFields = allFields);
238+
239+
public QueryStringQueryDescriptor<T> SplitOnWhitespace(bool? splitOnWhitespace = true) =>
240+
Assign(a => a.SplitOnWhitespace = splitOnWhitespace);
218241
}
219242
}

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/Nest/QueryDsl/TermLevel/Prefix/PrefixQuery.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ public class PrefixQueryDescriptor<T> : TermQueryDescriptorBase<PrefixQueryDescr
2626
MultiTermQueryRewrite IPrefixQuery.Rewrite { get; set; }
2727

2828
public PrefixQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) => Assign(a => a.Rewrite = rewrite);
29-
}
30-
}
29+
}
30+
}

src/Nest/QueryDsl/TermLevel/Wildcard/WildcardQuery.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ public class WildcardQueryDescriptor<T> : TermQueryDescriptorBase<WildcardQueryD
3535
MultiTermQueryRewrite IWildcardQuery.Rewrite { get; set; }
3636

3737
public WildcardQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) => Assign(a => a.Rewrite = rewrite);
38-
}
39-
}
38+
}
39+
}

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)