Skip to content

Commit

Permalink
Add missing fields on simple query string query (elastic#2795)
Browse files Browse the repository at this point in the history
* 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)
  • Loading branch information
russcam authored and awelburn committed Nov 6, 2017
1 parent f8c866b commit 78fa2fe
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 8 deletions.
25 changes: 24 additions & 1 deletion src/Nest/QueryDsl/FullText/QueryString/QueryStringQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public interface IQueryStringQuery : IQuery
bool? AllowLeadingWildcard { get; set; }

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

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

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

[JsonProperty("time_zone")]
Expand All @@ -85,6 +87,12 @@ public interface IQueryStringQuery : IQuery

[JsonProperty("escape")]
bool? Escape { get; set; }

[JsonProperty("all_fields")]
bool? AllFields { get; set; }

[JsonProperty("split_on_whitespace")]
bool? SplitOnWhitespace { get; set; }
}

public class QueryStringQuery : QueryBase, IQueryStringQuery
Expand All @@ -93,6 +101,7 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
public int? FuzzyMaxExpansions { get; set; }
public Fuzziness Fuzziness { get; set; }
public MinimumShouldMatch MinimumShouldMatch { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
public string Locale { get; set; }
public MultiTermQueryRewrite Rewrite { get; set; }
public MultiTermQueryRewrite FuzzyRewrite { get; set; }
Expand All @@ -106,6 +115,7 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
public string Analyzer { get; set; }
public string QuoteAnalyzer { get; set; }
public bool? AllowLeadingWildcard { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
public bool? LowercaseExpendedTerms { get; set; }
public bool? EnablePositionIncrements { get; set; }
public int? FuzzyPrefixLength { get; set; }
Expand All @@ -116,6 +126,8 @@ public class QueryStringQuery : QueryBase, IQueryStringQuery
public bool? UseDisMax { get; set; }
public double? TieBreaker { get; set; }
public int? MaximumDeterminizedStates { get; set; }
public bool? AllFields { get; set; }
public bool? SplitOnWhitespace { get; set; }

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

string IQueryStringQuery.Query { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
string IQueryStringQuery.Locale { get; set; }
string IQueryStringQuery.Timezone { get; set; }
Field IQueryStringQuery.DefaultField { get; set; }
Expand All @@ -137,6 +150,7 @@ public class QueryStringQueryDescriptor<T>
string IQueryStringQuery.Analyzer { get; set; }
string IQueryStringQuery.QuoteAnalyzer { get; set; }
bool? IQueryStringQuery.AllowLeadingWildcard { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
bool? IQueryStringQuery.LowercaseExpendedTerms { get; set; }
bool? IQueryStringQuery.EnablePositionIncrements { get; set; }
int? IQueryStringQuery.FuzzyMaxExpansions { get; set; }
Expand All @@ -154,6 +168,8 @@ public class QueryStringQueryDescriptor<T>
MultiTermQueryRewrite IQueryStringQuery.Rewrite { get; set; }
string IQueryStringQuery.QuoteFieldSuffix { get; set; }
bool? IQueryStringQuery.Escape { get; set; }
bool? IQueryStringQuery.AllFields { get; set; }
bool? IQueryStringQuery.SplitOnWhitespace { get; set; }

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

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

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

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

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

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

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

public QueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) => Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);
public QueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) =>
Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);

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

public QueryStringQueryDescriptor<T> AllFields(bool? allFields = true) => Assign(a => a.AllFields = allFields);

public QueryStringQueryDescriptor<T> SplitOnWhitespace(bool? splitOnWhitespace = true) =>
Assign(a => a.SplitOnWhitespace = splitOnWhitespace);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ public interface ISimpleQueryStringQuery : IQuery
SimpleQueryStringFlags? Flags { get; set; }

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

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

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

[JsonProperty("minimum_should_match")]
MinimumShouldMatch MinimumShouldMatch { get; set; }

[JsonProperty("quote_field_suffix")]
string QuoteFieldSuffix { get; set; }

[JsonProperty("all_fields")]
bool? AllFields { get; set; }
}

public class SimpleQueryStringQuery : QueryBase, ISimpleQueryStringQuery
Expand All @@ -46,11 +54,15 @@ public class SimpleQueryStringQuery : QueryBase, ISimpleQueryStringQuery
public string Analyzer { get; set; }
public Operator? DefaultOperator { get; set; }
public SimpleQueryStringFlags? Flags { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
public string Locale { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
public bool? LowercaseExpendedTerms { get; set; }
public bool? Lenient { get; set; }
public bool? AnalyzeWildcard { get; set; }
public MinimumShouldMatch MinimumShouldMatch { get; set; }
public string QuoteFieldSuffix { get; set; }
public bool? AllFields { get; set; }

internal override void InternalWrapInContainer(IQueryContainer c) => c.SimpleQueryString = this;
internal static bool IsConditionless(ISimpleQueryStringQuery q) => q.Query.IsNullOrEmpty();
Expand All @@ -66,11 +78,15 @@ public class SimpleQueryStringQueryDescriptor<T>
string ISimpleQueryStringQuery.Analyzer { get; set; }
Operator? ISimpleQueryStringQuery.DefaultOperator { get; set; }
SimpleQueryStringFlags? ISimpleQueryStringQuery.Flags { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
string ISimpleQueryStringQuery.Locale { get; set; }
[Obsolete("Deprecated in Elasticsearch 5.1.1. Can be performed by the analyzer applied")]
bool? ISimpleQueryStringQuery.LowercaseExpendedTerms { get; set; }
bool? ISimpleQueryStringQuery.AnalyzeWildcard { get; set; }
bool? ISimpleQueryStringQuery.Lenient { get; set; }
MinimumShouldMatch ISimpleQueryStringQuery.MinimumShouldMatch { get; set; }
string ISimpleQueryStringQuery.QuoteFieldSuffix { get; set; }
bool? ISimpleQueryStringQuery.AllFields { get; set; }

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

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

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

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

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

}
public SimpleQueryStringQueryDescriptor<T> QuoteFieldSuffix(string quoteFieldSuffix) =>
Assign(a => a.QuoteFieldSuffix = quoteFieldSuffix);

public SimpleQueryStringQueryDescriptor<T> AllFields(bool? allFields = true) =>
Assign(a => a.AllFields = allFields);
}
}
4 changes: 2 additions & 2 deletions src/Nest/QueryDsl/TermLevel/Prefix/PrefixQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ public class PrefixQueryDescriptor<T> : TermQueryDescriptorBase<PrefixQueryDescr
MultiTermQueryRewrite IPrefixQuery.Rewrite { get; set; }

public PrefixQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) => Assign(a => a.Rewrite = rewrite);
}
}
}
}
4 changes: 2 additions & 2 deletions src/Nest/QueryDsl/TermLevel/Wildcard/WildcardQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ public class WildcardQueryDescriptor<T> : TermQueryDescriptorBase<WildcardQueryD
MultiTermQueryRewrite IWildcardQuery.Rewrite { get; set; }

public WildcardQueryDescriptor<T> Rewrite(MultiTermQueryRewrite rewrite) => Assign(a => a.Rewrite = rewrite);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ public QueryStringUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base(i, u
AllowLeadingWildcard = true,
AutoGeneratePhraseQueries = true,
MaximumDeterminizedStates = 2,
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
LowercaseExpendedTerms = true,
Locale = "en_US",
#pragma warning restore 618 // usage of lowercase_expanded_terms and locale
EnablePositionIncrements = true,
Escape = true,
UseDisMax = true,
Expand All @@ -70,12 +73,12 @@ public QueryStringUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base(i, u
AnalyzeWildcard = true,
MinimumShouldMatch = 2,
QuoteFieldSuffix = "'",
Lenient = true,
Locale = "en_US",
Lenient = true,
Timezone = "root"
};

protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project> q) => q
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
.QueryString(c => c
.Name("named_query")
.Boost(1.1)
Expand Down Expand Up @@ -105,6 +108,7 @@ protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project>
.Locale("en_US")
.Timezone("root")
);
#pragma warning restore 618 // usage of lowercase_expanded_terms and locale

protected override ConditionlessWhen ConditionlessWhen => new ConditionlessWhen<IQueryStringQuery>(a => a.QueryString)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Tests.Framework.MockData;
using static Nest.Infer;


namespace Tests.QueryDsl.FullText.SimpleQueryString
{
public class SimpleQueryStringUsageTests : QueryDslUsageTestsBase
Expand Down Expand Up @@ -38,14 +39,17 @@ public SimpleQueryStringUsageTests(ReadOnlyCluster i, EndpointUsage usage) : bas
Analyzer = "standard",
DefaultOperator = Operator.Or,
Flags = SimpleQueryStringFlags.And|SimpleQueryStringFlags.Near,
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
Locale = "en_US",
LowercaseExpendedTerms = true,
#pragma warning restore 618
Lenient = true,
AnalyzeWildcard = true,
MinimumShouldMatch = "30%"
};

protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project> q) => q
#pragma warning disable 618 // usage of lowercase_expanded_terms and locale
.SimpleQueryString(c => c
.Name("named_query")
.Boost(1.1)
Expand All @@ -60,6 +64,7 @@ protected override QueryContainer QueryFluent(QueryContainerDescriptor<Project>
.AnalyzeWildcard()
.MinimumShouldMatch("30%")
);
#pragma warning restore 618

protected override ConditionlessWhen ConditionlessWhen => new ConditionlessWhen<ISimpleQueryStringQuery>(a => a.SimpleQueryString)
{
Expand Down

0 comments on commit 78fa2fe

Please sign in to comment.