diff --git a/src/Nest/Domain/Mapping/Attributes/ElasticPropertyAttribute.cs b/src/Nest/Domain/Mapping/Attributes/ElasticPropertyAttribute.cs index 42ce5ad160c..71cee70eb57 100644 --- a/src/Nest/Domain/Mapping/Attributes/ElasticPropertyAttribute.cs +++ b/src/Nest/Domain/Mapping/Attributes/ElasticPropertyAttribute.cs @@ -21,9 +21,11 @@ public class ElasticPropertyAttribute : Attribute, IElasticPropertyAttribute public string Analyzer { get; set; } public string IndexAnalyzer { get; set; } public string SearchAnalyzer { get; set; } - public string SortAnalyzer { get; set; } + public string SortAnalyzer { get; set; } public string NullValue { get; set; } - public string Similarity { get; set; } + public string Similarity { get; set; } + + public bool DocValues { get; set; } public bool OmitNorms { get; set; } public bool OmitTermFrequencyAndPositions { get; set; } diff --git a/src/Nest/Domain/Mapping/Attributes/IElasticPropertyAttribute.cs b/src/Nest/Domain/Mapping/Attributes/IElasticPropertyAttribute.cs index 0cff2759418..f047e1f83a4 100644 --- a/src/Nest/Domain/Mapping/Attributes/IElasticPropertyAttribute.cs +++ b/src/Nest/Domain/Mapping/Attributes/IElasticPropertyAttribute.cs @@ -2,7 +2,7 @@ public interface IElasticPropertyAttribute { bool AddSortField { get; set; } - + bool OptOut { get; set; } string Name { get; set; } @@ -22,7 +22,9 @@ public interface IElasticPropertyAttribute bool OmitNorms { get; set; } bool OmitTermFrequencyAndPositions { get; set; } bool IncludeInAll { get; set; } - bool Store { get; set; } + bool Store { get; set; } + + bool DocValues { get; set; } string Similarity { get; set; } diff --git a/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs index 4c62c3a6ccd..35dc3b36600 100644 --- a/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs +++ b/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs @@ -60,6 +60,12 @@ public NumberMappingDescriptor PrecisionStep(int precisionStep) return this; } + public NumberMappingDescriptor DocValues(bool docValues = true) + { + this._Mapping.DocValues = docValues; + return this; + } + public NumberMappingDescriptor IncludeInAll(bool includeInAll = true) { this._Mapping.IncludeInAll = includeInAll; diff --git a/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs index 891bd50ea82..0d3b7ed1859 100644 --- a/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs +++ b/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs @@ -76,6 +76,11 @@ public StringMappingDescriptor SearchAnalyzer(string searchAnalyzer) this._Mapping.SearchAnalyzer = searchAnalyzer; return this; } + public StringMappingDescriptor DocValues(bool docValues = true) + { + this._Mapping.DocValues = docValues; + return this; + } public StringMappingDescriptor IncludeInAll(bool includeInAll = true) { this._Mapping.IncludeInAll = includeInAll; diff --git a/src/Nest/Domain/Mapping/Types/NumberMapping.cs b/src/Nest/Domain/Mapping/Types/NumberMapping.cs index 0c153247af8..8ffd201952d 100644 --- a/src/Nest/Domain/Mapping/Types/NumberMapping.cs +++ b/src/Nest/Domain/Mapping/Types/NumberMapping.cs @@ -40,6 +40,9 @@ public class NumberMapping : IElasticType, IElasticCoreType [JsonProperty("null_value")] public double? NullValue { get; set; } + [JsonProperty("doc_values")] + public bool? DocValues { get; set; } + [JsonProperty("include_in_all")] public bool? IncludeInAll { get; set; } diff --git a/src/Nest/Domain/Mapping/Types/StringMapping.cs b/src/Nest/Domain/Mapping/Types/StringMapping.cs index 4ed51b47304..74bdf727af1 100644 --- a/src/Nest/Domain/Mapping/Types/StringMapping.cs +++ b/src/Nest/Domain/Mapping/Types/StringMapping.cs @@ -55,6 +55,9 @@ public class StringMapping : IElasticType, IElasticCoreType [JsonProperty("search_analyzer")] public string SearchAnalyzer { get; set; } + [JsonProperty("doc_values")] + public bool? DocValues { get; set; } + [JsonProperty("include_in_all")] public bool? IncludeInAll { get; set; } diff --git a/src/Nest/Resolvers/Writers/WritePropertiesFromAttributeVisitor.cs b/src/Nest/Resolvers/Writers/WritePropertiesFromAttributeVisitor.cs index 922785d49d6..188938ec558 100644 --- a/src/Nest/Resolvers/Writers/WritePropertiesFromAttributeVisitor.cs +++ b/src/Nest/Resolvers/Writers/WritePropertiesFromAttributeVisitor.cs @@ -88,6 +88,11 @@ public void VisitBaseAttribute(IElasticPropertyAttribute att) { this._jsonWriter.WritePropertyName("omit_norms"); this._jsonWriter.WriteValue("true"); } + if (att.DocValues) + { + this._jsonWriter.WritePropertyName("doc_values"); + this._jsonWriter.WriteValue("true"); + } if (att.OmitTermFrequencyAndPositions) { this._jsonWriter.WritePropertyName("omit_term_freq_and_positions"); diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/DocValuesProperty.json b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/DocValuesProperty.json new file mode 100644 index 00000000000..014345ebe07 --- /dev/null +++ b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/DocValuesProperty.json @@ -0,0 +1,13 @@ +{ + "docvaluesfoo": { + "properties": { + "id": { + "type": "integer" + }, + "value": { + "type": "integer", + "doc_values": true + } + } + } +} \ No newline at end of file diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/PropertiesTests.cs b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/PropertiesTests.cs index 9ebcc3e2b0c..0070b0e8af9 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/PropertiesTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/PropertiesTests.cs @@ -246,6 +246,31 @@ public void GeoShapeProperty() ) ); this.JsonEquals(result.ConnectionStatus.Request, MethodInfo.GetCurrentMethod()); + } + + public class DocValuesFoo + { + public int Id { get; set; } + [ElasticProperty(DocValues=true)] + public int Value { get; set; } + } + + [Test] + public void DocValuesProperty() + { + var result = this._client.Map(m => m.MapFromAttributes()); + this.JsonEquals(result.ConnectionStatus.Request, MethodInfo.GetCurrentMethod()); + + var result2 = this._client.Map(m => m + .Properties(props => props + .Number(nmd => nmd + .Name("id") + .Type(NumberType.integer)) + .Number(nmd => nmd + .Name("value") + .Type(NumberType.integer) + .DocValues()))); + this.JsonEquals(result2.ConnectionStatus.Request, MethodInfo.GetCurrentMethod()); } } diff --git a/src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj b/src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj index 5e965ee54be..6c6007d7c24 100644 --- a/src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj +++ b/src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj @@ -1,878 +1,879 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {97408393-78AC-45DF-BE6E-4C219A2E456D} - Library - Properties - Nest.Tests.Unit - Nest.Tests.Unit - 512 - ..\ - true - v4.0 - - - - True - bin\Debug\ - DEBUG;TRACE - full - AnyCPU - bin\Debug\Nest.Tests.Unit.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - false - ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - false - 4 - False - false - - - bin\Release\ - TRACE - True - pdbonly - AnyCPU - bin\Release\Nest.Tests.Unit.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - false - ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - false - 4 - false - - - true - bin\Debug - Generator\ - DEBUG;TRACE - full - AnyCPU - prompt - MinimumRecommendedRules.ruleset - false - false - 4 - false - false - - - - ..\..\..\dep\AutoPoco.1.0.0.0\lib\AutoPoco.dll - - - False - ..\..\..\dep\FakeItEasy.1.18.0\lib\net40\FakeItEasy.dll - - - False - ..\..\..\dep\FluentAssertions.2.2.0.0\lib\net40\FluentAssertions.dll - - - ..\..\..\dep\Moq.4.2.1312.1622\lib\net40\Moq.dll - - - False - ..\..\..\dep\Newtonsoft.Json.6.0.1\lib\net40\Newtonsoft.Json.dll - - - ..\..\..\dep\NUnit.2.6.3\lib\nunit.framework.dll - - - - - - - - - - - - - LinkedExtensions\DateExtensions.cs - - - LinkedExtensions\Extensions.cs - - - LinkedExtensions\NameValueCollectionExtensions.cs - - - LinkedExtensions\StringExtensions.cs - - - LinkedExtensions\TypeExtensions.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - PreserveNewest - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - - {e97ccf40-0ba6-43fe-9f2d-58d454134088} - Elasticsearch.Net - - - {27143A05-5655-447C-ADAF-405E1CF43741} - Nest.Tests.MockData - - - {072BA7DA-7B60-407D-8B6E-95E3186BE70C} - Nest - - - - - Always - - - - - + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {97408393-78AC-45DF-BE6E-4C219A2E456D} + Library + Properties + Nest.Tests.Unit + Nest.Tests.Unit + 512 + ..\ + true + v4.0 + + + + True + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + bin\Debug\Nest.Tests.Unit.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + false + ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + 4 + False + false + + + bin\Release\ + TRACE + True + pdbonly + AnyCPU + bin\Release\Nest.Tests.Unit.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + false + ;d:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + 4 + false + + + true + bin\Debug - Generator\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + false + false + 4 + false + false + + + + ..\..\..\dep\AutoPoco.1.0.0.0\lib\AutoPoco.dll + + + False + ..\..\..\dep\FakeItEasy.1.18.0\lib\net40\FakeItEasy.dll + + + False + ..\..\..\dep\FluentAssertions.2.2.0.0\lib\net40\FluentAssertions.dll + + + ..\..\..\dep\Moq.4.2.1312.1622\lib\net40\Moq.dll + + + False + ..\..\..\dep\Newtonsoft.Json.6.0.1\lib\net40\Newtonsoft.Json.dll + + + ..\..\..\dep\NUnit.2.6.3\lib\nunit.framework.dll + + + + + + + + + + + + + LinkedExtensions\DateExtensions.cs + + + LinkedExtensions\Extensions.cs + + + LinkedExtensions\NameValueCollectionExtensions.cs + + + LinkedExtensions\StringExtensions.cs + + + LinkedExtensions\TypeExtensions.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + PreserveNewest + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + {e97ccf40-0ba6-43fe-9f2d-58d454134088} + Elasticsearch.Net + + + {27143A05-5655-447C-ADAF-405E1CF43741} + Nest.Tests.MockData + + + {072BA7DA-7B60-407D-8B6E-95E3186BE70C} + Nest + + + + + Always + + + + + + --> \ No newline at end of file