# How to create settings and mappings via API call? (via Java/Spring Boot)

**URL:** <https://discuss.elastic.co/t/how-to-create-settings-and-mappings-via-api-call-via-java-spring-boot/216476>\
**Category:** Elasticsearch\
**Tags:** docker\
**Created:** [January 24, 2020, 6:17pm UTC](https://discuss.elastic.co/t/how-to-create-settings-and-mappings-via-api-call-via-java-spring-boot/216476 "2020-01-24T18:17:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![franzisk](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/franzisk/32/61527_2.png) [@franzisk](https://discuss.elastic.co/u/franzisk)\
**Post date:** [January 24, 2020, 6:17pm UTC](https://discuss.elastic.co/t/how-to-create-settings-and-mappings-via-api-call-via-java-spring-boot/216476/1 "2020-01-24T18:17:00Z")

</div>

Hi all,

Before, in ElasticSearch 2.3.1, I was checking if some index existed and if not I was making a PUT request to create it with **my settings and my mappings** , just like below:

```
String synonymFiltersName = "filtro_de_sinonimos";
String synonymAnalyzerName = "analizador_sinonimos";		

public String generateIndexJSON() throws IOException {
	XContentBuilder settingsBuilder = XContentFactory.jsonBuilder()
	        .startObject()
	        
		        .startObject("settings")
			        .startObject("index")
                        .field("number_of_shards",3)
                        .field("number_of_replicas",0)				        	
                        .field("sort.field", Const.COL_DATA_HORA)				        	
                        .field("sort.order", "asc")				        	
			        .endObject()
			        
		        	.startObject("analysis")			        	
		                .startObject("filter")
		                    .startObject("portuguese_stop")
		                        .field("type","stop")
		                        .field("stopwords","_portuguese_")
		                    .endObject()
		                    .startObject("portuguese_stemmer")
		                        .field("type","stemmer")
		                        .field("language","light_portuguese")
		                    .endObject()
		                    
		                    .startObject(synonymFiltersName)
		                        .field("type","synonym")
		                        .startArray("synonyms")
		                        	.value("deletar => deletar,excluir,apagar,remover")
		                        	.value("salvar => salvar,atualizar")
		                        	.value("email,mail,imail")
		                        	.value("administrador => admin,administrador,super")
		                        .endArray()
	                        .endObject()
		                .endObject() // filter
		                
		                .startObject("analyzer")
		                    .startObject(synonymAnalyzerName)
		                    	.field("tokenizer", "standard")
		                    	.array("filter","lowercase","portuguese_stop","portuguese_stemmer", synonymFiltersName)
		                    .endObject()
		                .endObject() // analyzer
		               
		            .endObject()
		        .endObject()
		        
		        .startObject("mappings")
		        	.startObject(Const.LOG_INDEX_NAME)
		        		.startObject("_all")
		        			.field("type", "string")
		        			.field("index", "analyzed")
		        			.field("analyzer", "portuguese")
		        		.endObject()
		        		
		        		.startObject("properties") // configuração dos campos/atributos
			        		.startObject(Const.COL_DATA_HORA)
		        				.field("type", "date")
			        			.field("index", "analyzed")
			        			.field("format",Const.FORMATO_COL_DATA_HORA)
		        			.endObject() // dataHora
		        		
		        			.startObject("id")
		        				.field("type", "integer")
			        			.field("index", "analyzed")
			        			.startObject("fields")
			        				.startObject("original")
					        			.field("type", "integer")
					        			.field("index", "not_analyzed")			        				
			        				.endObject()
			        			.endObject()
		        			.endObject() // idUsuario
		        						        			
		        			.startObject(Const.COL_OPERACAO)
	        					.field("type", "string")
	        					.field("index", "analyzed")
	        					.field("analyzer", "portuguese")
	        					.field("search_analyzer", synonymAnalyzerName)
	        					.startObject("fields")
		        					.startObject("original")
				        				.field("type", "string")
				        				.field("index", "not_analyzed")			        				
				        			.endObject()
		        				.endObject()
		        			.endObject() // operacao
		        			
		        			.startObject(Const.COL_SERVICO)
	        					.field("type", "string")
	        					.field("index", "analyzed")
	        					.field("analyzer", "portuguese")
	        					.startObject("fields")
		        					.startObject("original")
				        				.field("type", "string")
				        				.field("index", "not_analyzed")			        				
				        			.endObject()
		        				.endObject()
		        			.endObject() // nomeServico
		        			
		        			.startObject(Const.COL_CLIENTE)
	        					.field("type", "string")
	        					.field("index", "analyzed")
	        					.field("analyzer", "portuguese")
	        					.field("search_analyzer", synonymAnalyzerName)
	        					.startObject("fields")
		        					.startObject("original")
				        				.field("type", "string")
				        				.field("index", "not_analyzed")			        				
				        			.endObject()
		        				.endObject()
		        			.endObject() // nomeCliente

		        			
		        			.startObject(Const.COL_USUARIO)
	        					.field("type", "string")
	        					.field("index", "analyzed")
	        					.field("analyzer", "portuguese")
	        					.field("search_analyzer", synonymAnalyzerName)
	        					.startObject("fields")
		        					.startObject("original")
				        				.field("type", "string")
				        				.field("index", "not_analyzed")			        				
				        			.endObject()
		        				.endObject()
		        			.endObject() // nomeUsuario
		        			
		        			.startObject(Const.COL_EMAIL)
	        					.field("type", "string")
	        					.field("index", "analyzed")
	        					.field("analyzer", "portuguese")
	        					.startObject("fields")
		        					.startObject("original")
				        				.field("type", "string")
				        				.field("index", "not_analyzed")			        				
				        			.endObject()
		        				.endObject()
		        			.endObject() // emailUsuario
		        			
		        		.endObject() // properties
		        	.endObject()
		        .endObject()
	        .endObject();
	
	String json = Strings.toString(settingsBuilder);		

```

Now, in version 7.5.1, I do the same request but it doesn't create the complete configuration I need:  
 ![superlog-mappings](https://us1.discourse-cdn.com/elastic/original/3X/3/1/3181b91bbe0a7f1c3bceb3bbf95ff07ef0ea29c3.png)

My question is, how can I do the same thing using this new version?

Also, where can I find documentation about ElasticSearch API calls?

Is there something like Kopf plugin for this new version? How can I manipulate the settings?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 21, 2020, 6:17pm UTC](https://discuss.elastic.co/t/how-to-create-settings-and-mappings-via-api-call-via-java-spring-boot/216476/2 "2020-02-21T18:17:09Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
