@@ -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" )));
0 commit comments