Skip to content

Commit 50d57aa

Browse files
committed
Merge pull request #899 from elasticsearch/feature/field-data-mapping
Add field data mapping support
2 parents df72dcc + 3c451c2 commit 50d57aa

25 files changed

+467
-17
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
namespace Nest
7+
{
8+
public class FieldDataFilterDescriptor
9+
{
10+
internal FieldDataFilter Filter { get; private set; }
11+
12+
public FieldDataFilterDescriptor()
13+
{
14+
this.Filter = new FieldDataFilter();
15+
}
16+
17+
public FieldDataFilterDescriptor Frequency(
18+
Func<FieldDataFrequencyFilterDescriptor, FieldDataFrequencyFilterDescriptor> frequencyFilterSelector)
19+
{
20+
var selector = frequencyFilterSelector(new FieldDataFrequencyFilterDescriptor());
21+
this.Filter.Frequency = selector.FrequencyFilter;
22+
return this;
23+
}
24+
25+
public FieldDataFilterDescriptor Regex(
26+
Func<FieldDataRegexFilterDescriptor, FieldDataRegexFilterDescriptor> regexFilterSelector)
27+
{
28+
var selector = regexFilterSelector(new FieldDataRegexFilterDescriptor());
29+
this.Filter.Regex = selector.RegexFilter;
30+
return this;
31+
}
32+
}
33+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
namespace Nest
7+
{
8+
public class FieldDataFrequencyFilterDescriptor
9+
{
10+
internal FieldDataFrequencyFilter FrequencyFilter { get; private set; }
11+
12+
public FieldDataFrequencyFilterDescriptor()
13+
{
14+
this.FrequencyFilter = new FieldDataFrequencyFilter();
15+
}
16+
17+
public FieldDataFrequencyFilterDescriptor Min(double min)
18+
{
19+
this.FrequencyFilter.Min = min;
20+
return this;
21+
}
22+
23+
public FieldDataFrequencyFilterDescriptor Max(double max)
24+
{
25+
this.FrequencyFilter.Max = max;
26+
return this;
27+
}
28+
29+
public FieldDataFrequencyFilterDescriptor MinSegmentSize(int minSegmentSize)
30+
{
31+
this.FrequencyFilter.MinSegmentSize = minSegmentSize;
32+
return this;
33+
}
34+
}
35+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+

2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
7+
namespace Nest
8+
{
9+
public class FieldDataNonStringMappingDescriptor
10+
{
11+
internal FieldDataNonStringMapping FieldData { get; private set; }
12+
13+
public FieldDataNonStringMappingDescriptor()
14+
{
15+
this.FieldData = new FieldDataNonStringMapping();
16+
}
17+
18+
public FieldDataNonStringMappingDescriptor Format(FieldDataNonStringFormat format)
19+
{
20+
this.FieldData.Format = format;
21+
return this;
22+
}
23+
24+
public FieldDataNonStringMappingDescriptor Loading(FieldDataLoading loading)
25+
{
26+
this.FieldData.Loading = loading;
27+
return this;
28+
}
29+
30+
public FieldDataNonStringMappingDescriptor Filter(Func<FieldDataFilterDescriptor, FieldDataFilterDescriptor> filterSelector)
31+
{
32+
var selector = filterSelector(new FieldDataFilterDescriptor());
33+
this.FieldData.Filter = selector.Filter;
34+
return this;
35+
}
36+
}
37+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+

2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
7+
namespace Nest
8+
{
9+
public class FieldDataRegexFilterDescriptor
10+
{
11+
internal FieldDataRegexFilter RegexFilter { get; private set; }
12+
13+
public FieldDataRegexFilterDescriptor()
14+
{
15+
this.RegexFilter = new FieldDataRegexFilter();
16+
}
17+
18+
public FieldDataRegexFilterDescriptor Pattern(string pattern)
19+
{
20+
this.RegexFilter.Pattern = pattern;
21+
return this;
22+
}
23+
}
24+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
namespace Nest
7+
{
8+
public class FieldDataStringMappingDescriptor
9+
{
10+
internal FieldDataStringMapping FieldData { get; private set; }
11+
12+
public FieldDataStringMappingDescriptor()
13+
{
14+
this.FieldData = new FieldDataStringMapping();
15+
}
16+
17+
public FieldDataStringMappingDescriptor Format(FieldDataStringFormat format)
18+
{
19+
this.FieldData.Format = format;
20+
return this;
21+
}
22+
23+
public FieldDataStringMappingDescriptor Loading(FieldDataLoading loading)
24+
{
25+
this.FieldData.Loading = loading;
26+
return this;
27+
}
28+
29+
public FieldDataStringMappingDescriptor Filter(Func<FieldDataFilterDescriptor, FieldDataFilterDescriptor> filterSelector)
30+
{
31+
var selector = filterSelector(new FieldDataFilterDescriptor());
32+
this.FieldData.Filter = selector.Filter;
33+
return this;
34+
}
35+
}
36+
}

src/Nest/Domain/Mapping/Descriptors/GeoPointMappingDescriptor.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,19 @@ public GeoPointMappingDescriptor<T> GeoHashPrecision(int geoHashPrecision)
3535
this._Mapping.GeoHashPrecision = geoHashPrecision;
3636
return this;
3737
}
38+
39+
public GeoPointMappingDescriptor<T> FieldData(Func<FieldDataNonStringMappingDescriptor, FieldDataNonStringMappingDescriptor> fieldDataSelector)
40+
{
41+
fieldDataSelector.ThrowIfNull("fieldDataSelector");
42+
var selector = fieldDataSelector(new FieldDataNonStringMappingDescriptor());
43+
this._Mapping.FieldData = selector.FieldData;
44+
return this;
45+
}
46+
47+
public GeoPointMappingDescriptor<T> FieldData(FieldDataNonStringMapping fieldData)
48+
{
49+
this._Mapping.FieldData = fieldData;
50+
return this;
51+
}
3852
}
3953
}

src/Nest/Domain/Mapping/Descriptors/NumberMappingDescriptor.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,20 @@ public NumberMappingDescriptor<T> Fields(Func<CorePropertiesDescriptor<T>, CoreP
100100
_Mapping.Fields[p.Key] = value;
101101
}
102102
return this;
103+
}
104+
105+
public NumberMappingDescriptor<T> FieldData(Func<FieldDataNonStringMappingDescriptor, FieldDataNonStringMappingDescriptor> fieldDataSelector)
106+
{
107+
fieldDataSelector.ThrowIfNull("fieldDataSelector");
108+
var selector = fieldDataSelector(new FieldDataNonStringMappingDescriptor());
109+
this._Mapping.FieldData = selector.FieldData;
110+
return this;
111+
}
112+
113+
public NumberMappingDescriptor<T> FieldData(FieldDataNonStringMapping fieldData)
114+
{
115+
this._Mapping.FieldData = fieldData;
116+
return this;
103117
}
104118
}
105119
}

src/Nest/Domain/Mapping/Descriptors/StringMappingDescriptor.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,19 @@ public StringMappingDescriptor<T> Fields(Func<CorePropertiesDescriptor<T>, CoreP
140140
}
141141
return this;
142142
}
143+
144+
public StringMappingDescriptor<T> FieldData(Func<FieldDataStringMappingDescriptor, FieldDataStringMappingDescriptor> fieldDataSelector)
145+
{
146+
fieldDataSelector.ThrowIfNull("fieldDataSelector");
147+
var selector = fieldDataSelector(new FieldDataStringMappingDescriptor());
148+
this._Mapping.FieldData = selector.FieldData;
149+
return this;
150+
}
151+
152+
public StringMappingDescriptor<T> FieldData(FieldDataStringMapping fieldData)
153+
{
154+
this._Mapping.FieldData = fieldData;
155+
return this;
156+
}
143157
}
144158
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Newtonsoft.Json;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
7+
namespace Nest
8+
{
9+
[JsonObject(MemberSerialization.OptIn)]
10+
public class FieldDataFilter
11+
{
12+
[JsonProperty("frequency")]
13+
public FieldDataFrequencyFilter Frequency { get; set; }
14+
15+
[JsonProperty("regex")]
16+
public FieldDataRegexFilter Regex { get; set; }
17+
}
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Newtonsoft.Json;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
7+
namespace Nest
8+
{
9+
[JsonObject(MemberSerialization.OptIn)]
10+
public class FieldDataFrequencyFilter
11+
{
12+
[JsonProperty("min")]
13+
public double? Min { get; set; }
14+
15+
[JsonProperty("max")]
16+
public double? Max { get; set; }
17+
18+
[JsonProperty("min_segment_size")]
19+
public int? MinSegmentSize { get; set; }
20+
}
21+
}

0 commit comments

Comments
 (0)