From 29d069c5f0881253e4c6a1a1aef372b3140aaf8d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Fri, 22 Nov 2013 18:47:17 +0100 Subject: [PATCH] SONAR-4904 Disable dynamic mapping in ES --- .../main/java/org/sonar/server/search/SearchIndex.java | 8 ++++++-- .../java/org/sonar/server/search/SearchIndexTest.java | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/search/SearchIndex.java b/sonar-server/src/main/java/org/sonar/server/search/SearchIndex.java index 9912a933b97..622c2048c63 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/SearchIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/search/SearchIndex.java @@ -54,10 +54,13 @@ public class SearchIndex { private static final Logger LOG = LoggerFactory.getLogger(SearchIndex.class); private static final Settings INDEX_DEFAULT_SETTINGS = ImmutableSettings.builder() - .put("index.number_of_shards", 1) - .put("index.number_of_replicas", 0) + .put("number_of_shards", 1) + .put("number_of_replicas", 0) + .put("mapper.dynamic", false) .build(); + private static final String INDEX_DEFAULT_MAPPING = "{ \"_default_\": { \"dynamic\": \"strict\" } }"; + private SearchNode searchNode; private Client client; @@ -138,6 +141,7 @@ public class SearchIndex { profiler.start(format("create index '%s'", index)); indices.prepareCreate(index) .setSettings(INDEX_DEFAULT_SETTINGS) + .addMapping("_default_", INDEX_DEFAULT_MAPPING) .execute().actionGet(); } } catch (Exception e) { diff --git a/sonar-server/src/test/java/org/sonar/server/search/SearchIndexTest.java b/sonar-server/src/test/java/org/sonar/server/search/SearchIndexTest.java index f0dc8f37e66..aee360967c7 100644 --- a/sonar-server/src/test/java/org/sonar/server/search/SearchIndexTest.java +++ b/sonar-server/src/test/java/org/sonar/server/search/SearchIndexTest.java @@ -23,6 +23,7 @@ package org.sonar.server.search; import com.github.tlrx.elasticsearch.test.EsSetup; import org.elasticsearch.common.io.BytesStream; import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.index.mapper.StrictDynamicMappingException; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -124,4 +125,12 @@ public class SearchIndexTest { List docIds = searchIndex.findDocumentIds(SearchQuery.create()); assertThat(docIds).hasSize(numberOfDocuments); } + + @Test(expected = StrictDynamicMappingException.class) + public void should_forbid_dynamic_mapping() throws Exception { + searchIndex.addMappingFromClasspath("index", "type1", "/org/sonar/server/search/SearchIndexTest/correct_mapping1.json"); + searchIndex.put("index", "type1", "666", + XContentFactory.jsonBuilder().startObject().field("unknown", "plouf").endObject() + ); + } } -- 2.39.5