diff --git a/src/Nest/DSL/Query/DismaxQueryDescriptor.cs b/src/Nest/DSL/Query/DismaxQueryDescriptor.cs index ba3b71d838f..ba0cb2153d0 100644 --- a/src/Nest/DSL/Query/DismaxQueryDescriptor.cs +++ b/src/Nest/DSL/Query/DismaxQueryDescriptor.cs @@ -2,12 +2,13 @@ using System.Collections.Generic; using System.Linq; using Nest.Resolvers.Converters; -using Newtonsoft.Json; +using Newtonsoft.Json; +using Nest.Resolvers.Converters.Queries; namespace Nest { - [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - [JsonConverter(typeof(ReadAsTypeConverter>))] + [JsonObject(MemberSerialization = MemberSerialization.OptIn)] + [JsonConverter(typeof(DismaxQueryJsonConverter))] public interface IDisMaxQuery : IQuery { [JsonProperty(PropertyName = "tie_breaker")] diff --git a/src/Nest/Nest.csproj b/src/Nest/Nest.csproj index 5b04564b583..658910f5a65 100644 --- a/src/Nest/Nest.csproj +++ b/src/Nest/Nest.csproj @@ -1,1150 +1,1151 @@ - - - - - Debug - AnyCPU - {072BA7DA-7B60-407D-8B6E-95E3186BE70C} - Library - Properties - Nest - Nest - v4.0 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - BasicCorrectnessRules.ruleset - AnyCPU - bin\Debug\Nest.XML - false - 1591,1572,1571,1573,1587,1570 - - - pdbonly - True - bin\Release\ - TRACE - prompt - 4 - AllRules.ruleset - bin\Release\Nest.XML - 1591,1572,1571,1573,1587,1570 - - - true - bin\Debug - Generator\ - DEBUG;TRACE - bin\Debug\Nest.XML - full - AnyCPU - prompt - BasicCorrectnessRules.ruleset - - - true - - - ..\..\build\keys\keypair.snk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Code - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Code - - - Code - - - - - - Code - - - Code - - - - Code - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - {e97ccf40-0ba6-43fe-9f2d-58d454134088} - Elasticsearch.Net - - - - - - - + + + + + Debug + AnyCPU + {072BA7DA-7B60-407D-8B6E-95E3186BE70C} + Library + Properties + Nest + Nest + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + BasicCorrectnessRules.ruleset + AnyCPU + bin\Debug\Nest.XML + false + 1591,1572,1571,1573,1587,1570 + + + pdbonly + True + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + bin\Release\Nest.XML + 1591,1572,1571,1573,1587,1570 + + + true + bin\Debug - Generator\ + DEBUG;TRACE + bin\Debug\Nest.XML + full + AnyCPU + prompt + BasicCorrectnessRules.ruleset + + + true + + + ..\..\build\keys\keypair.snk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + Code + + + + + + Code + + + Code + + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + {e97ccf40-0ba6-43fe-9f2d-58d454134088} + Elasticsearch.Net + + + + + + + - - - - - - ..\..\packages\Newtonsoft.Json\lib\netcore45\Newtonsoft.Json.dll - True - True - - - - - - - ..\..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll - True - True - - - - - - - ..\..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll - True - True - - - - - - - ..\..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll - True - True - - - - - - - ..\..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll - True - True - - - - - - - ..\..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+monotouch+monoandroid\Newtonsoft.Json.dll - True - True - - - - - - - ..\..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8\Newtonsoft.Json.dll - True - True - - - - + --> + + + + + + ..\..\packages\Newtonsoft.Json\lib\netcore45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+monotouch+monoandroid\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8\Newtonsoft.Json.dll + True + True + + + + \ No newline at end of file diff --git a/src/Nest/Resolvers/Converters/Queries/DismaxQueryJsonConverter.cs b/src/Nest/Resolvers/Converters/Queries/DismaxQueryJsonConverter.cs new file mode 100644 index 00000000000..98739824c7d --- /dev/null +++ b/src/Nest/Resolvers/Converters/Queries/DismaxQueryJsonConverter.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest.Resolvers.Converters.Queries +{ + public class DismaxQueryJsonConverter : ReadAsTypeConverter> + { + public override bool CanConvert(Type objectType) + { + return true; + } + + public override bool CanRead { get { return true; } } + + public override bool CanWrite { get { return true; } } + + public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) + { + return base.ReadJson(reader, objectType, existingValue, serializer); + } + + public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) + { + var d = value as IDisMaxQuery; + if (d == null) return; + + writer.WriteStartObject(); + { + if (!d.Name.IsNullOrEmpty()) { + writer.WritePropertyName("_name"); + writer.WriteValue(d.Name); + } + if (d.TieBreaker.HasValue) + { + writer.WritePropertyName("tie_breaker"); + serializer.Serialize(writer, d.TieBreaker); + } + if (d.Boost.HasValue) + { + writer.WritePropertyName("boost"); + writer.WriteValue(d.Boost.Value); + } + if (d.Queries.HasAny() && d.Queries.Any(q => !q.IsConditionless)) + { + writer.WritePropertyName("queries"); + writer.WriteStartArray(); + { + foreach (var q in d.Queries) + { + if (!q.IsConditionless) + { + serializer.Serialize(writer, q); + } + } + } + writer.WriteEndArray(); + } + } + writer.WriteEndObject(); + } + } +} diff --git a/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/DisMaxQueryTests.cs b/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/DisMaxQueryTests.cs index 8a23d1b0ede..15b66437b4a 100644 --- a/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/DisMaxQueryTests.cs +++ b/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/DisMaxQueryTests.cs @@ -24,6 +24,26 @@ public void DisMax_Deserializes() q.Queries.Should().NotBeEmpty().And.HaveCount(2); AssertIsTermQuery(q.Queries.First(), Query1); AssertIsTermQuery(q.Queries.Last(), Query2); + } + + [Test] + public void DisMax_With_Conditionless_Query() + { + QueryContainer conditionlessQuery = Query.Term("w", ""); + + var q = this.SerializeThenDeserialize( + f => f.DisMax, + f => f.Dismax(d => d + .Boost(1.5) + .Queries(qq => conditionlessQuery, qq => Query1) + .TieBreaker(1.1) + ) + ); + q.Boost.Should().Be(1.5); + q.TieBreaker.Should().Be(1.1); + q.Queries.Should().NotBeEmpty().And.HaveCount(1); + + AssertIsTermQuery(q.Queries.First(), Query1); } } } \ No newline at end of file