# Elasticsearch | Spring Data Elasticsearch | Unsupported ID type

**URL:** https://discuss.elastic.co/t/elasticsearch-spring-data-elasticsearch-unsupported-id-type/107422
**Category:** Elasticsearch
**Created:** [November 13, 2017, 3:45pm UTC](https://discuss.elastic.co/t/elasticsearch-spring-data-elasticsearch-unsupported-id-type/107422 "2017-11-13T15:45:55Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Rahul\_Lao](https://avatars.discourse-cdn.com/v4/letter/r/f0a364/32.png) [@Rahul\_Lao](https://discuss.elastic.co/u/Rahul_Lao)
#### Post date: [November 13, 2017, 3:45pm UTC](https://discuss.elastic.co/t/elasticsearch-spring-data-elasticsearch-unsupported-id-type/107422/1 "2017-11-13T15:45:55Z")

</div>

I am trying to create an application where i can perform elastic search capabilities via spring boot and java, but i am facing java.lang.IllegalArgumentException: Unsupported ID type class elastic.model.Identifier

Here is how the code looks

I have model classes as

```
package elastic.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName="customCustomer", type="elkcustomer")
public class Customer {

	@Id
	private Identifier identifier;
	private Order order;
	private String homeAddress;
	private String contact;
    //getters, setters, hashcode, equals, toString()

```

Identifier as

```
package elastic.model;

import java.io.Serializable;

public class Identifier implements Serializable {

	private String id;
	private String firstName;
	private String lastName;
    //getters, setters, hashcode,equals, toString()

```

Order as

```
package elastic.model;

import java.io.Serializable;

public class Order implements Serializable {

	private int orderId;
	private String orderDescription;
	private float price;
    //getters, setters, hashcode, equals, toString

```

Repository as

```
package elastic.repository;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import elastic.model.Customer;
import elastic.model.Identifier;

@Repository
public interface CustomerRepository extends ElasticsearchRepository<Customer, Identifier> {

}

```

And main runner class as

```
package elastic.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

import elastic.model.Customer;
import elastic.model.Identifier;
import elastic.model.Order;
import elastic.repository.CustomerRepository;

@SpringBootApplication
@EnableElasticsearchRepositories(basePackages="elastic")
public class ElasticSearchApplication implements CommandLineRunner {

	@Autowired private CustomerRepository customerRepository;

	public static void main(String[] args) {
		SpringApplication.run(ElasticSearchApplication.class);
	}
	
	public void run(String... args) throws Exception {
		this.customerRepository.deleteAll();
		saveCustomers();
	}

	private void saveCustomers() {
		this.customerRepository.saveAll(generateCustomers());
	}
	
	private List<Customer> generateCustomers() {
		List<Customer> customers = new ArrayList<Customer>();
		
		Customer customer1 = new Customer();
		Identifier identifier1 = new Identifier();
		identifier1.setId("1001");
		identifier1.setFirstName("Rahul");
		identifier1.setLastName("Lao");
		customer1.setIdentifier(identifier1);
		Order order1 = new Order();
		order1.setOrderId(1);
		order1.setOrderDescription("Order 1");
		order1.setPrice(23.45f);
		customer1.setOrder(order1);
		customer1.setHomeAddress("Germany");
		customer1.setContact("9874563210");
		
		customers.add(customer1);
		
		return customers;
	}
	
}

```

And exception that i face is

```
Caused by: java.lang.IllegalArgumentException: Unsupported ID type class elastic.model.Identifier
	at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactory.getRepositoryBaseClass(ElasticsearchRepositoryFactory.java:90)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$getRepositoryInformation$2(RepositoryFactorySupport.java:378)
	at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepositoryInformation(RepositoryFactorySupport.java:376)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:294)
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$3(RepositoryFactoryBeanSupport.java:287)
	at org.springframework.data.util.Lazy.getNullable(Lazy.java:141)
	at org.springframework.data.util.Lazy.get(Lazy.java:63)
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:290)
	at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean.afterPropertiesSet(ElasticsearchRepositoryFactoryBean.java:67)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1763)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1700)
	... 29 more

```

How can i resolve this, so that i can take custom classes as ID and not just primitive data type such as String, long, int as id.

Thanks.

---

<div class="post-metadata">

### Author: ![Rahul\_Lao](https://avatars.discourse-cdn.com/v4/letter/r/f0a364/32.png) [@Rahul\_Lao](https://discuss.elastic.co/u/Rahul_Lao)
#### Post date: [November 14, 2017, 9:57am UTC](https://discuss.elastic.co/t/elasticsearch-spring-data-elasticsearch-unsupported-id-type/107422/2 "2017-11-14T09:57:52Z")

</div>

@thomasneirynck @weltenwort looking for your suggestions.  
Thanks

---

<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: [December 12, 2017, 9:58am UTC](https://discuss.elastic.co/t/elasticsearch-spring-data-elasticsearch-unsupported-id-type/107422/3 "2017-12-12T09:58:00Z")

</div>

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