Skip to content

Commit 230c041

Browse files
committed
DATAES-88 - add method createIndex(Class<T> clazz, Object settings)
1 parent 3261af3 commit 230c041

File tree

3 files changed

+63
-18
lines changed

3 files changed

+63
-18
lines changed

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ public interface ElasticsearchOperations {
6161
*/
6262
boolean createIndex(String indexName, Object settings);
6363

64+
/**
65+
* Create an index for given class and Settings
66+
*
67+
* @param clazz
68+
* @param settings
69+
*/
70+
<T> boolean createIndex(Class<T> clazz, Object settings);
71+
6472
/**
6573
* Create mapping for a class
6674
*

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,11 @@ public boolean createIndex(String indexName, Object settings) {
643643
return createIndexRequestBuilder.execute().actionGet().isAcknowledged();
644644
}
645645

646+
@Override
647+
public <T> boolean createIndex(Class<T> clazz, Object settings) {
648+
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
649+
}
650+
646651
private <T> Map getDefaultSettings(ElasticsearchPersistentEntity<T> persistentEntity) {
647652
return new MapBuilder<String, String>().put("index.number_of_shards", String.valueOf(persistentEntity.getShards()))
648653
.put("index.number_of_replicas", String.valueOf(persistentEntity.getReplicas()))

src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,29 +1377,28 @@ public void shouldThrowAnExceptionWhenNoIndexSpecifiedForCountQuery() {
13771377
@Test
13781378
public void shouldCreateIndexWithGivenSettings() {
13791379
// given
1380-
String settings =
1381-
"{ " +
1382-
"\"settings\" : { " +
1383-
"\"index\": { " +
1384-
"\"analysis\" :{ " +
1385-
"\"analyzer\": { " +
1386-
"\"email-analyzer\": { " +
1387-
"\"type\" : \"custom\"," +
1388-
"\"tokenizer\" : \"uax_url_email\"," +
1389-
"\"filter\" : [\"standard\", \"lowercase\", \"stop\"]\n" +
1390-
"}\n" +
1391-
"}\n" +
1392-
"}\n" +
1393-
"}\n" +
1394-
"}\n" +
1395-
"}";
1380+
String settings = "{\n" +
1381+
" \"index\": {\n" +
1382+
" \"number_of_shards\": \"1\",\n" +
1383+
" \"number_of_replicas\": \"0\",\n" +
1384+
" \"analysis\": {\n" +
1385+
" \"analyzer\": {\n" +
1386+
" \"emailAnalyzer\": {\n" +
1387+
" \"type\": \"custom\",\n" +
1388+
" \"tokenizer\": \"uax_url_email\"\n" +
1389+
" }\n" +
1390+
" }\n" +
1391+
" }\n" +
1392+
" }\n" +
1393+
"}";
1394+
13961395
elasticsearchTemplate.deleteIndex("test-index");
13971396
// when
13981397
elasticsearchTemplate.createIndex("test-index", settings);
13991398
// then
14001399
Map map = elasticsearchTemplate.getSetting("test-index");
1401-
boolean hasAnalyzer = map.containsKey("index.settings.index.analysis.analyzer.email-analyzer.tokenizer");
1402-
String emailAnalyzer = (String) map.get("index.settings.index.analysis.analyzer.email-analyzer.tokenizer");
1400+
boolean hasAnalyzer = map.containsKey("index.analysis.analyzer.emailAnalyzer.tokenizer");
1401+
String emailAnalyzer = (String) map.get("index.analysis.analyzer.emailAnalyzer.tokenizer");
14031402
assertThat(elasticsearchTemplate.indexExists("test-index"), is(true));
14041403
assertThat(hasAnalyzer, is(true));
14051404
assertThat(emailAnalyzer, is("uax_url_email"));
@@ -1426,6 +1425,39 @@ public void shouldCreateGivenSettingsForGivenIndex() {
14261425
assertThat((String) map.get("index.store.type"), is("memory"));
14271426
}
14281427

1428+
/*
1429+
DATAES-88
1430+
*/
1431+
@Test
1432+
public void shouldCreateIndexWithGivenClassAndSettings() {
1433+
//given
1434+
String settings = "{\n" +
1435+
" \"index\": {\n" +
1436+
" \"number_of_shards\": \"1\",\n" +
1437+
" \"number_of_replicas\": \"0\",\n" +
1438+
" \"analysis\": {\n" +
1439+
" \"analyzer\": {\n" +
1440+
" \"emailAnalyzer\": {\n" +
1441+
" \"type\": \"custom\",\n" +
1442+
" \"tokenizer\": \"uax_url_email\"\n" +
1443+
" }\n" +
1444+
" }\n" +
1445+
" }\n" +
1446+
" }\n" +
1447+
"}";
1448+
1449+
elasticsearchTemplate.deleteIndex(SampleEntity.class);
1450+
elasticsearchTemplate.createIndex(SampleEntity.class, settings);
1451+
elasticsearchTemplate.refresh(SampleEntity.class, true);
1452+
1453+
// then
1454+
Map map = elasticsearchTemplate.getSetting(SampleEntity.class);
1455+
assertThat(elasticsearchTemplate.indexExists("test-index"), is(true));
1456+
assertThat(map.containsKey("index.number_of_replicas"), is(true));
1457+
assertThat(map.containsKey("index.number_of_shards"), is(true));
1458+
assertThat((String) map.get("index.number_of_replicas"), is("0"));
1459+
assertThat((String) map.get("index.number_of_shards"), is("1"));
1460+
}
14291461

14301462
@Test
14311463
public void shouldTestResultsAcrossMultipleIndices() {

0 commit comments

Comments
 (0)