aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-server/src/main/java/org/sonar/server/search/SearchIndex.java8
-rw-r--r--sonar-server/src/test/java/org/sonar/server/search/SearchIndexTest.java9
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<String> 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()
+ );
+ }
}