From 3c451c29f64e9df4625e827b9c36a220ded1d90c Mon Sep 17 00:00:00 2001 From: Greg Marzouka Date: Fri, 22 Aug 2014 15:06:14 -0400 Subject: [PATCH] Add field data mapping support Closes #867. --- .../Descriptors/FieldDataFilterDescriptor.cs | 33 ++++++++++++ .../FieldDataFrequencyFilterDescriptor.cs | 35 +++++++++++++ .../FieldDataNonStringMappingDescriptor.cs | 37 ++++++++++++++ .../FieldDataRegexFilterDescriptor.cs | 24 +++++++++ .../FieldDataStringMappingDescriptor.cs | 36 +++++++++++++ .../Descriptors/GeoPointMappingDescriptor.cs | 14 ++++++ .../Descriptors/NumberMappingDescriptor.cs | 14 ++++++ .../Descriptors/StringMappingDescriptor.cs | 14 ++++++ .../SubMappings/FieldData/FieldDataFilter.cs | 18 +++++++ .../FieldData/FieldDataFrequencyFilter.cs | 21 ++++++++ .../SubMappings/FieldData/FieldDataMapping.cs | 18 +++++++ .../FieldData/FieldDataNonStringMapping.cs | 15 ++++++ .../FieldData/FieldDataRegexFilter.cs | 15 ++++++ .../FieldData/FieldDataStringMapping.cs | 15 ++++++ .../Domain/Mapping/Types/GeoPointMapping.cs | 3 ++ .../Domain/Mapping/Types/NumberMapping.cs | 2 + .../Domain/Mapping/Types/StringMapping.cs | 5 +- src/Nest/Enums/FieldDataLoading.cs | 19 +++++++ src/Nest/Enums/FieldDataNonStringFormat.cs | 21 ++++++++ src/Nest/Enums/FieldDataStringFormat.cs | 23 +++++++++ src/Nest/Nest.csproj | 14 ++++++ .../Core/Map/Properties/GeoPointProperty.json | 16 ++++-- .../Core/Map/Properties/NumberProperty.json | 6 ++- .../Core/Map/Properties/PropertiesTests.cs | 50 +++++++++++++++---- .../Core/Map/Properties/StringProperty.json | 16 +++++- 25 files changed, 467 insertions(+), 17 deletions(-) create mode 100644 src/Nest/Domain/Mapping/Descriptors/FieldDataFilterDescriptor.cs create mode 100644 src/Nest/Domain/Mapping/Descriptors/FieldDataFrequencyFilterDescriptor.cs create mode 100644 src/Nest/Domain/Mapping/Descriptors/FieldDataNonStringMappingDescriptor.cs create mode 100644 src/Nest/Domain/Mapping/Descriptors/FieldDataRegexFilterDescriptor.cs create mode 100644 src/Nest/Domain/Mapping/Descriptors/FieldDataStringMappingDescriptor.cs create mode 100644 src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFilter.cs create mode 100644 src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFrequencyFilter.cs create mode 100644 src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataMapping.cs create mode 100644 src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataNonStringMapping.cs create mode 100644 src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataRegexFilter.cs create mode 100644 src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataStringMapping.cs create mode 100644 src/Nest/Enums/FieldDataLoading.cs create mode 100644 src/Nest/Enums/FieldDataNonStringFormat.cs create mode 100644 src/Nest/Enums/FieldDataStringFormat.cs diff --git a/src/Nest/Domain/Mapping/Descriptors/FieldDataFilterDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/FieldDataFilterDescriptor.cs new file mode 100644 index 00000000000..c69d2ecc700 --- /dev/null +++ b/src/Nest/Domain/Mapping/Descriptors/FieldDataFilterDescriptor.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + public class FieldDataFilterDescriptor + { + internal FieldDataFilter Filter { get; private set; } + + public FieldDataFilterDescriptor() + { + this.Filter = new FieldDataFilter(); + } + + public FieldDataFilterDescriptor Frequency( + Func frequencyFilterSelector) + { + var selector = frequencyFilterSelector(new FieldDataFrequencyFilterDescriptor()); + this.Filter.Frequency = selector.FrequencyFilter; + return this; + } + + public FieldDataFilterDescriptor Regex( + Func regexFilterSelector) + { + var selector = regexFilterSelector(new FieldDataRegexFilterDescriptor()); + this.Filter.Regex = selector.RegexFilter; + return this; + } + } +} diff --git a/src/Nest/Domain/Mapping/Descriptors/FieldDataFrequencyFilterDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/FieldDataFrequencyFilterDescriptor.cs new file mode 100644 index 00000000000..7af55b970e6 --- /dev/null +++ b/src/Nest/Domain/Mapping/Descriptors/FieldDataFrequencyFilterDescriptor.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + public class FieldDataFrequencyFilterDescriptor + { + internal FieldDataFrequencyFilter FrequencyFilter { get; private set; } + + public FieldDataFrequencyFilterDescriptor() + { + this.FrequencyFilter = new FieldDataFrequencyFilter(); + } + + public FieldDataFrequencyFilterDescriptor Min(double min) + { + this.FrequencyFilter.Min = min; + return this; + } + + public FieldDataFrequencyFilterDescriptor Max(double max) + { + this.FrequencyFilter.Max = max; + return this; + } + + public FieldDataFrequencyFilterDescriptor MinSegmentSize(int minSegmentSize) + { + this.FrequencyFilter.MinSegmentSize = minSegmentSize; + return this; + } + } +} diff --git a/src/Nest/Domain/Mapping/Descriptors/FieldDataNonStringMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/FieldDataNonStringMappingDescriptor.cs new file mode 100644 index 00000000000..8e3c404b38e --- /dev/null +++ b/src/Nest/Domain/Mapping/Descriptors/FieldDataNonStringMappingDescriptor.cs @@ -0,0 +1,37 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + public class FieldDataNonStringMappingDescriptor + { + internal FieldDataNonStringMapping FieldData { get; private set; } + + public FieldDataNonStringMappingDescriptor() + { + this.FieldData = new FieldDataNonStringMapping(); + } + + public FieldDataNonStringMappingDescriptor Format(FieldDataNonStringFormat format) + { + this.FieldData.Format = format; + return this; + } + + public FieldDataNonStringMappingDescriptor Loading(FieldDataLoading loading) + { + this.FieldData.Loading = loading; + return this; + } + + public FieldDataNonStringMappingDescriptor Filter(Func filterSelector) + { + var selector = filterSelector(new FieldDataFilterDescriptor()); + this.FieldData.Filter = selector.Filter; + return this; + } + } +} diff --git a/src/Nest/Domain/Mapping/Descriptors/FieldDataRegexFilterDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/FieldDataRegexFilterDescriptor.cs new file mode 100644 index 00000000000..d939dc34ae1 --- /dev/null +++ b/src/Nest/Domain/Mapping/Descriptors/FieldDataRegexFilterDescriptor.cs @@ -0,0 +1,24 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + public class FieldDataRegexFilterDescriptor + { + internal FieldDataRegexFilter RegexFilter { get; private set; } + + public FieldDataRegexFilterDescriptor() + { + this.RegexFilter = new FieldDataRegexFilter(); + } + + public FieldDataRegexFilterDescriptor Pattern(string pattern) + { + this.RegexFilter.Pattern = pattern; + return this; + } + } +} diff --git a/src/Nest/Domain/Mapping/Descriptors/FieldDataStringMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/FieldDataStringMappingDescriptor.cs new file mode 100644 index 00000000000..987eecf7c68 --- /dev/null +++ b/src/Nest/Domain/Mapping/Descriptors/FieldDataStringMappingDescriptor.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + public class FieldDataStringMappingDescriptor + { + internal FieldDataStringMapping FieldData { get; private set; } + + public FieldDataStringMappingDescriptor() + { + this.FieldData = new FieldDataStringMapping(); + } + + public FieldDataStringMappingDescriptor Format(FieldDataStringFormat format) + { + this.FieldData.Format = format; + return this; + } + + public FieldDataStringMappingDescriptor Loading(FieldDataLoading loading) + { + this.FieldData.Loading = loading; + return this; + } + + public FieldDataStringMappingDescriptor Filter(Func filterSelector) + { + var selector = filterSelector(new FieldDataFilterDescriptor()); + this.FieldData.Filter = selector.Filter; + return this; + } + } +} diff --git a/src/Nest/Domain/Mapping/Descriptors/GeoPointMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/GeoPointMappingDescriptor.cs index 6c01484aee8..6e8f4b2c8d9 100644 --- a/src/Nest/Domain/Mapping/Descriptors/GeoPointMappingDescriptor.cs +++ b/src/Nest/Domain/Mapping/Descriptors/GeoPointMappingDescriptor.cs @@ -35,5 +35,19 @@ public GeoPointMappingDescriptor GeoHashPrecision(int geoHashPrecision) this._Mapping.GeoHashPrecision = geoHashPrecision; return this; } + + public GeoPointMappingDescriptor FieldData(Func fieldDataSelector) + { + fieldDataSelector.ThrowIfNull("fieldDataSelector"); + var selector = fieldDataSelector(new FieldDataNonStringMappingDescriptor()); + this._Mapping.FieldData = selector.FieldData; + return this; + } + + public GeoPointMappingDescriptor FieldData(FieldDataNonStringMapping fieldData) + { + this._Mapping.FieldData = fieldData; + return this; + } } } \ No newline at end of file diff --git a/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs index 6eba10c1a9f..0fc24ffd289 100644 --- a/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs +++ b/src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs @@ -100,6 +100,20 @@ public NumberMappingDescriptor Fields(Func, CoreP _Mapping.Fields[p.Key] = value; } return this; + } + + public NumberMappingDescriptor FieldData(Func fieldDataSelector) + { + fieldDataSelector.ThrowIfNull("fieldDataSelector"); + var selector = fieldDataSelector(new FieldDataNonStringMappingDescriptor()); + this._Mapping.FieldData = selector.FieldData; + return this; + } + + public NumberMappingDescriptor FieldData(FieldDataNonStringMapping fieldData) + { + this._Mapping.FieldData = fieldData; + return this; } } } \ No newline at end of file diff --git a/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs b/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs index adcc3ccdfc2..9d73967b6ab 100644 --- a/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs +++ b/src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs @@ -140,5 +140,19 @@ public StringMappingDescriptor Fields(Func, CoreP } return this; } + + public StringMappingDescriptor FieldData(Func fieldDataSelector) + { + fieldDataSelector.ThrowIfNull("fieldDataSelector"); + var selector = fieldDataSelector(new FieldDataStringMappingDescriptor()); + this._Mapping.FieldData = selector.FieldData; + return this; + } + + public StringMappingDescriptor FieldData(FieldDataStringMapping fieldData) + { + this._Mapping.FieldData = fieldData; + return this; + } } } \ No newline at end of file diff --git a/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFilter.cs b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFilter.cs new file mode 100644 index 00000000000..6608601e4dc --- /dev/null +++ b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFilter.cs @@ -0,0 +1,18 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + [JsonObject(MemberSerialization.OptIn)] + public class FieldDataFilter + { + [JsonProperty("frequency")] + public FieldDataFrequencyFilter Frequency { get; set; } + + [JsonProperty("regex")] + public FieldDataRegexFilter Regex { get; set; } + } +} diff --git a/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFrequencyFilter.cs b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFrequencyFilter.cs new file mode 100644 index 00000000000..22319ef2c73 --- /dev/null +++ b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataFrequencyFilter.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + [JsonObject(MemberSerialization.OptIn)] + public class FieldDataFrequencyFilter + { + [JsonProperty("min")] + public double? Min { get; set; } + + [JsonProperty("max")] + public double? Max { get; set; } + + [JsonProperty("min_segment_size")] + public int? MinSegmentSize { get; set; } + } +} diff --git a/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataMapping.cs b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataMapping.cs new file mode 100644 index 00000000000..40c4249cf83 --- /dev/null +++ b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataMapping.cs @@ -0,0 +1,18 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + [JsonObject(MemberSerialization.OptIn)] + public abstract class FieldDataMapping + { + [JsonProperty("loading")] + public FieldDataLoading? Loading { get; set; } + + [JsonProperty("filter")] + public FieldDataFilter Filter { get; set; } + } +} diff --git a/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataNonStringMapping.cs b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataNonStringMapping.cs new file mode 100644 index 00000000000..2aca880c6b7 --- /dev/null +++ b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataNonStringMapping.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + [JsonObject(MemberSerialization.OptIn)] + public class FieldDataNonStringMapping : FieldDataMapping + { + [JsonProperty("format")] + public FieldDataNonStringFormat? Format { get; set; } + } +} diff --git a/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataRegexFilter.cs b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataRegexFilter.cs new file mode 100644 index 00000000000..a524356c67f --- /dev/null +++ b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataRegexFilter.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + [JsonObject(MemberSerialization.OptIn)] + public class FieldDataRegexFilter + { + [JsonProperty("pattern")] + public string Pattern { get; set; } + } +} diff --git a/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataStringMapping.cs b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataStringMapping.cs new file mode 100644 index 00000000000..3157a7c1939 --- /dev/null +++ b/src/Nest/Domain/Mapping/SubMappings/FieldData/FieldDataStringMapping.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Nest +{ + [JsonObject(MemberSerialization.OptIn)] + public class FieldDataStringMapping : FieldDataMapping + { + [JsonProperty("format")] + public FieldDataStringFormat? Format { get; set; } + } +} diff --git a/src/Nest/Domain/Mapping/Types/GeoPointMapping.cs b/src/Nest/Domain/Mapping/Types/GeoPointMapping.cs index 8bc56e0effe..1d6467cdf7b 100644 --- a/src/Nest/Domain/Mapping/Types/GeoPointMapping.cs +++ b/src/Nest/Domain/Mapping/Types/GeoPointMapping.cs @@ -23,5 +23,8 @@ public class GeoPointMapping : IElasticType [JsonProperty("geohash_precision")] public int? GeoHashPrecision { get; set; } + + [JsonProperty("fielddata")] + public FieldDataNonStringMapping FieldData { get; set; } } } \ No newline at end of file diff --git a/src/Nest/Domain/Mapping/Types/NumberMapping.cs b/src/Nest/Domain/Mapping/Types/NumberMapping.cs index b94f77d77dd..ef0a10f72a5 100644 --- a/src/Nest/Domain/Mapping/Types/NumberMapping.cs +++ b/src/Nest/Domain/Mapping/Types/NumberMapping.cs @@ -43,5 +43,7 @@ public NumberMapping() [JsonProperty("coerce")] public bool? Coerce { get; set; } + [JsonProperty("fielddata")] + public FieldDataNonStringMapping FieldData { get; set; } } } \ No newline at end of file diff --git a/src/Nest/Domain/Mapping/Types/StringMapping.cs b/src/Nest/Domain/Mapping/Types/StringMapping.cs index 1bb229dbabf..8f6eb4c3fa1 100644 --- a/src/Nest/Domain/Mapping/Types/StringMapping.cs +++ b/src/Nest/Domain/Mapping/Types/StringMapping.cs @@ -61,6 +61,9 @@ public StringMapping():base("string") public int? PositionOffsetGap { get; set; } [JsonProperty("copy_to")] - public IEnumerable CopyTo { get; set; } + public IEnumerable CopyTo { get; set; } + + [JsonProperty("fielddata")] + public FieldDataStringMapping FieldData { get; set; } } } \ No newline at end of file diff --git a/src/Nest/Enums/FieldDataLoading.cs b/src/Nest/Enums/FieldDataLoading.cs new file mode 100644 index 00000000000..6418ed01589 --- /dev/null +++ b/src/Nest/Enums/FieldDataLoading.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; + +namespace Nest +{ + [JsonConverter(typeof(StringEnumConverter))] + public enum FieldDataLoading + { + [EnumMember(Value = "eager")] + Eager, + [EnumMember(Value = "eager_global_ordinals")] + EagerGlobalOrdinals + } +} diff --git a/src/Nest/Enums/FieldDataNonStringFormat.cs b/src/Nest/Enums/FieldDataNonStringFormat.cs new file mode 100644 index 00000000000..82044195846 --- /dev/null +++ b/src/Nest/Enums/FieldDataNonStringFormat.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; + +namespace Nest +{ + [JsonConverter(typeof(StringEnumConverter))] + public enum FieldDataNonStringFormat + { + [EnumMember(Value = "array")] + Array, + [EnumMember(Value = "doc_values")] + DocValues, + [EnumMember(Value = "disabled")] + Disabled + } +} diff --git a/src/Nest/Enums/FieldDataStringFormat.cs b/src/Nest/Enums/FieldDataStringFormat.cs new file mode 100644 index 00000000000..95137850462 --- /dev/null +++ b/src/Nest/Enums/FieldDataStringFormat.cs @@ -0,0 +1,23 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; + +namespace Nest +{ + [JsonConverter(typeof(StringEnumConverter))] + public enum FieldDataStringFormat + { + [EnumMember(Value = "paged_bytes")] + PagedBytes, + [EnumMember(Value = "fst")] + Fst, + [EnumMember(Value = "doc_values")] + DocValues, + [EnumMember(Value = "disabled")] + Disabled + } +} diff --git a/src/Nest/Nest.csproj b/src/Nest/Nest.csproj index 72a96fe64b0..bb3a2fdeb7a 100644 --- a/src/Nest/Nest.csproj +++ b/src/Nest/Nest.csproj @@ -139,6 +139,11 @@ + + + + + @@ -151,6 +156,12 @@ + + + + + + @@ -243,6 +254,9 @@ + + + diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/GeoPointProperty.json b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/GeoPointProperty.json index a8e337d584c..1fc9646eaa2 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/GeoPointProperty.json +++ b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/GeoPointProperty.json @@ -1,12 +1,22 @@ - { +{ "elasticsearchprojects": { "properties": { "origin": { "type": "geo_point", "lat_lon": true, "geohash": true, - "geohash_precision": 12 + "geohash_precision": 12, + "fielddata": { + "format": "array", + "loading": "eager_global_ordinals", + "filter": { + "frequency": { + "min": 0.001, + "max": 0.1 + } + } + } } } } -} \ No newline at end of file +} diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/NumberProperty.json b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/NumberProperty.json index 476a2ab3131..6b0d13baff4 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/NumberProperty.json +++ b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/NumberProperty.json @@ -10,7 +10,11 @@ "boost": 2.0, "null_value": 0.0, "include_in_all": true, - "ignore_malformed": true + "ignore_malformed": true, + "fielddata": { + "format": "doc_values", + "loading": "eager" + } } } } 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 692f073ec63..8909c85a741 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/PropertiesTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/PropertiesTests.cs @@ -31,7 +31,21 @@ public void StringProperty() .TermVector(TermVectorOption.WithPositionsOffsets) .Boost(1.1) .CopyTo(p => p.Content, p => p.Country) - .IgnoreAbove(20) + .IgnoreAbove(20) + .FieldData(fd => fd + .Format(FieldDataStringFormat.Fst) + .Loading(FieldDataLoading.Eager) + .Filter(fdf => fdf + .Frequency(freq => freq + .Min(0.001) + .Max(0.1) + .MinSegmentSize(500) + ) + .Regex(rx => rx + .Pattern("^#.*") + ) + ) + ) ) ) ); @@ -53,6 +67,10 @@ public void NumberProperty() .Index() .Store() .PrecisionStep(1) + .FieldData(fd => fd + .Format(FieldDataNonStringFormat.DocValues) + .Loading(FieldDataLoading.Eager) + ) ) ) ); @@ -261,16 +279,26 @@ public void SortAnalyzeryReadFromAttribute() [Test] public void GeoPointProperty() - { - var result = this._client.Map(m => m - .Properties(props => props - .GeoPoint(s => s - .Name(p => p.Origin) - .IndexGeoHash() - .IndexLatLon() - .GeoHashPrecision(12) - ) - ) + { + var result = this._client.Map(m => m + .Properties(props => props + .GeoPoint(s => s + .Name(p => p.Origin) + .IndexGeoHash() + .IndexLatLon() + .GeoHashPrecision(12) + .FieldData(fd => fd + .Format(FieldDataNonStringFormat.Array) + .Loading(FieldDataLoading.EagerGlobalOrdinals) + .Filter(fdf => fdf + .Frequency(freq => freq + .Min(0.001) + .Max(0.1) + ) + ) + ) + ) + ) ); this.JsonEquals(result.ConnectionStatus.Request, MethodInfo.GetCurrentMethod()); } diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/StringProperty.json b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/StringProperty.json index 64945920443..ef1268806d1 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/Properties/StringProperty.json +++ b/src/Tests/Nest.Tests.Unit/Core/Map/Properties/StringProperty.json @@ -21,7 +21,21 @@ "search_analyzer": "standard", "include_in_all": true, "position_offset_gap": 1, - "copy_to": [ "content", "country" ] + "copy_to": [ "content", "country" ], + "fielddata": { + "format": "fst", + "loading": "eager", + "filter": { + "frequency": { + "min": 0.001, + "max": 0.1, + "min_segment_size": 500 + }, + "regex": { + "pattern": "^#.*" + } + } + } } } }