christophstrobl / spring-data-solr-showcase

Sample Spring MVC Application demonstrating usage of Spring Data Solr.
Apache License 2.0
95 stars 85 forks source link

Multi-core with Multi-tenancy #7

Open skrasovsky opened 8 years ago

skrasovsky commented 8 years ago

Hi!

We use solr 5.x and spring-data-solr. I try to understand is it possible to use multi-core in multi-tenancy mode.

We have several tenants and we want to have a single solr core per tenant. The main problem is a spring repositories, i can't define which core should use repository for current tenant. For example:

public class User {
    @Field("username")
    private String username;
}

public interface UserRepository extends SolrCrudRepository<User, String> {
    User findUserByUsername(String username);
}

And two cores:

http://localhost:8983/solr/tenant_1
http://localhost:8983/solr/tenant_2

So, if tenant = tenant_1, repository should search for user in /solr/tenant_1, if tenant = tenant_2 in /solr/tenant_1.

I can do it manually via solrj:

String solrServerUrl = "http://localhost:8983/solr";
MulticoreSolrServerFactory solrServerFactory = new MulticoreSolrServerFactory(new HttpSolrServer(solrServerUrl));

SolrServer solrServer = solrServerFactory.getSolrServer("tenant1");

SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("find user by username query");

solrServer.query(solrQuery);

But it is not convenient. In this case we need to rewrite all our solr repositories.

@christophstrobl can you advice something?

Thanks!

casabian commented 7 years ago

Hi @skrasovsky, did you find a solution for this? I'm facing the same problem without willing to rewrite all repos.

@christophstrobl do you have any advice for that topic?

Thanks!