Skip to content

Commit 0003f72

Browse files
committed
Added additional tests
1 parent f256203 commit 0003f72

File tree

3 files changed

+138
-2
lines changed

3 files changed

+138
-2
lines changed

server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,17 @@ public Builder(final String name, final MappingParserContext mappingParserContex
220220
name,
221221
mappingParserContext.getIndexAnalyzers(),
222222
mappingParserContext.scriptCompiler(),
223-
IGNORE_ABOVE_SETTING.get(mappingParserContext.getSettings()),
223+
IGNORE_ABOVE_DEFAULT_STANDARD_INDICES,
224224
mappingParserContext.getIndexSettings().getIndexVersionCreated(),
225225
mappingParserContext.getIndexSettings().getMode(),
226226
mappingParserContext.getIndexSettings().getIndexSortConfig(),
227227
USE_DOC_VALUES_SKIPPER.get(mappingParserContext.getSettings()),
228228
false,
229229
mappingParserContext.getIndexSettings().sourceKeepMode()
230230
);
231+
if (IGNORE_ABOVE_SETTING.exists(mappingParserContext.getSettings())) {
232+
this.ignoreAbove.setValue(IGNORE_ABOVE_SETTING.get(mappingParserContext.getSettings()));
233+
}
231234
}
232235

233236
Builder(

server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldMapperTests.java

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,108 @@ public void testIgnoreAbove() throws IOException {
243243
assertTrue(doc.rootDoc().getFields("_ignored").stream().anyMatch(field -> "field".equals(field.stringValue())));
244244
}
245245

246+
public void test_ignore_above_index_level_setting() throws IOException {
247+
// given
248+
final MapperService mapperService = createMapperService(
249+
Settings.builder()
250+
.put(IndexSettings.MODE.getKey(), IndexMode.STANDARD.name())
251+
.put(IndexSettings.IGNORE_ABOVE_SETTING.getKey(), 123)
252+
.build(),
253+
mapping(b -> {
254+
b.startObject("field");
255+
b.field("type", "keyword");
256+
b.endObject();
257+
})
258+
);
259+
260+
// when
261+
final KeywordFieldMapper mapper = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("field");
262+
263+
// then
264+
assertEquals(123, mapper.fieldType().ignoreAbove());
265+
assertTrue(mapper.fieldType().isIgnoreAboveSet());
266+
}
267+
268+
public void test_ignore_above_index_level_setting_is_overridden_by_field_level_ignore_above_in_standard_indices() throws IOException {
269+
// given
270+
final MapperService mapperService = createMapperService(
271+
Settings.builder()
272+
.put(IndexSettings.MODE.getKey(), IndexMode.STANDARD.name())
273+
.put(IndexSettings.IGNORE_ABOVE_SETTING.getKey(), 123)
274+
.build(),
275+
mapping(b -> {
276+
b.startObject("potato");
277+
b.field("type", "keyword");
278+
b.field("ignore_above", 456);
279+
b.endObject();
280+
281+
b.startObject("tomato");
282+
b.field("type", "keyword");
283+
b.field("ignore_above", 789);
284+
b.endObject();
285+
286+
b.startObject("cheese");
287+
b.field("type", "keyword");
288+
b.endObject();
289+
})
290+
);
291+
292+
// when
293+
final KeywordFieldMapper fieldMapper1 = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("potato");
294+
final KeywordFieldMapper fieldMapper2 = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("tomato");
295+
final KeywordFieldMapper fieldMapper3 = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("cheese");
296+
297+
// then
298+
assertEquals(456, fieldMapper1.fieldType().ignoreAbove());
299+
assertTrue(fieldMapper1.fieldType().isIgnoreAboveSet());
300+
301+
assertEquals(789, fieldMapper2.fieldType().ignoreAbove());
302+
assertTrue(fieldMapper2.fieldType().isIgnoreAboveSet());
303+
304+
assertEquals(123, fieldMapper3.fieldType().ignoreAbove());
305+
assertTrue(fieldMapper3.fieldType().isIgnoreAboveSet());
306+
}
307+
308+
public void test_ignore_above_index_level_setting_is_overridden_by_field_level_ignore_above_in_logsdb_indices() throws IOException {
309+
// given
310+
final MapperService mapperService = createMapperService(
311+
Settings.builder()
312+
.put(IndexSettings.MODE.getKey(), IndexMode.LOGSDB.name())
313+
.put(IndexSettings.IGNORE_ABOVE_SETTING.getKey(), 123)
314+
.build(),
315+
mapping(b -> {
316+
b.startObject("potato");
317+
b.field("type", "keyword");
318+
b.field("ignore_above", 456);
319+
b.endObject();
320+
321+
b.startObject("tomato");
322+
b.field("type", "keyword");
323+
b.field("ignore_above", 789);
324+
b.endObject();
325+
326+
b.startObject("cheese");
327+
b.field("type", "keyword");
328+
b.endObject();
329+
})
330+
);
331+
332+
// when
333+
final KeywordFieldMapper fieldMapper1 = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("potato");
334+
final KeywordFieldMapper fieldMapper2 = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("tomato");
335+
final KeywordFieldMapper fieldMapper3 = (KeywordFieldMapper) mapperService.documentMapper().mappers().getMapper("cheese");
336+
337+
// then
338+
assertEquals(456, fieldMapper1.fieldType().ignoreAbove());
339+
assertTrue(fieldMapper1.fieldType().isIgnoreAboveSet());
340+
341+
assertEquals(789, fieldMapper2.fieldType().ignoreAbove());
342+
assertTrue(fieldMapper2.fieldType().isIgnoreAboveSet());
343+
344+
assertEquals(123, fieldMapper3.fieldType().ignoreAbove());
345+
assertTrue(fieldMapper3.fieldType().isIgnoreAboveSet());
346+
}
347+
246348
public void testNullValue() throws IOException {
247349
DocumentMapper mapper = createDocumentMapper(fieldMapping(this::minimalMapping));
248350
ParsedDocument doc = mapper.parse(source(b -> b.nullField("field")));

server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
package org.elasticsearch.index.mapper;
1010

1111
import com.carrotsearch.randomizedtesting.generators.RandomStrings;
12-
1312
import org.apache.lucene.analysis.Analyzer;
1413
import org.apache.lucene.analysis.LowerCaseFilter;
1514
import org.apache.lucene.analysis.TokenFilter;
@@ -299,6 +298,38 @@ public void testGetTerms() throws IOException {
299298
}
300299
}
301300

301+
public void test_ignore_above_index_level_setting() {
302+
// given
303+
Settings settings = Settings.builder()
304+
.put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current())
305+
.put(IndexSettings.MODE.getKey(), IndexMode.STANDARD)
306+
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
307+
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)
308+
.put(IndexSettings.IGNORE_ABOVE_SETTING.getKey(), 123)
309+
.build();
310+
IndexSettings indexSettings = new IndexSettings(IndexMetadata.builder("index").settings(settings).build(), settings);
311+
MappingParserContext mappingParserContext = mock(MappingParserContext.class);
312+
doReturn(settings).when(mappingParserContext).getSettings();
313+
doReturn(indexSettings).when(mappingParserContext).getIndexSettings();
314+
doReturn(mock(ScriptCompiler.class)).when(mappingParserContext).scriptCompiler();
315+
316+
KeywordFieldMapper.Builder builder = new KeywordFieldMapper.Builder("field", mappingParserContext);
317+
318+
KeywordFieldMapper.KeywordFieldType fieldType = new KeywordFieldMapper.KeywordFieldType(
319+
"field",
320+
mock(FieldType.class),
321+
mock(NamedAnalyzer.class),
322+
mock(NamedAnalyzer.class),
323+
mock(NamedAnalyzer.class),
324+
builder,
325+
true
326+
);
327+
328+
// when/then
329+
assertFalse(fieldType.isIgnoreAboveSet());
330+
assertEquals(123, fieldType.ignoreAbove());
331+
}
332+
302333
public void test_isIgnoreAboveSet_returns_true_when_ignore_above_is_given() {
303334
// given
304335
Settings settings = Settings.builder()

0 commit comments

Comments
 (0)