Search code examples
javasolrdatastaxsolrj

How to set collection in query in SolrJ


I'm working on a system that uses SolrJ on top of DSE for searching purposes. Currently, I'm implementing search features using SolrJ in Java. I created the SolrClient using base URL (http://localhost:PORT/solr) and I'm trying to specify the collection when requesting query

client.query("collectionName", query);

However, it seems to me that SolrJ is ignoring collection because I'm getting the following error:

/solr/update The requested resource is not available.

When I'm adding a collection to SolrClient URL instead of in query function, it works fine. This solution is blocking me from using a single client to request for many collections, so I want to use the first one. Anyone encountered this?

EDIT: I've checked also on 6.6. Still the same. Full error:

Error from server at http://localhost:8983/solr: Expected mime type application/octet-stream but got text/html. Apache Tomcat/8.0.47 - Error reportH1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}

HTTP Status 404 - /solr/update

type Status report

message /solr/update

description The requested resource is not available.

Apache Tomcat/8.0.47

org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://localhost:8983/solr: Expected mime type application/octet-stream but got text/html. Apache Tomcat/8.0.47 - Error reportH1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}

HTTP Status 404 - /solr/update

type Status report

message /solr/update

description The requested resource is not available.

Apache Tomcat/8.0.47


Solution

  • Hmmm, that's really strange - just tested on the DSE 6.0.2 in my test environment - works just fine for my tables (with standard SolrJ client 6.6.0):

    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>6.6.0</version>
    </dependency>
    

    code:

    public static void main(String[] args) throws SolrServerException, IOException {
        String url = "http://192.168.0.10:8983/solr";
    
        SolrClient client = new HttpSolrClient.Builder(url).build();
        SolrQuery query = new SolrQuery();
        query.setQuery("*:*");
        query.addFilterQuery("user:\"krystina.morissette\"");
        query.setRows(10);
        QueryResponse response = client.query("gatling.user_tokens", query);
        SolrDocumentList list = response.getResults();
        System.out.println("Num found=" + list.getNumFound());
        for (SolrDocument doc: list) {
            System.out.println(doc);
        }
    }
    

    Gives me following:

    Num found=4
    SolrDocument{_uniqueKey=["krystina.morissette","36c8a420-b91f-477c-88b4-59ca8c59c69e"], expires=Wed Jul 25 11:42:13 CEST 2018, created=Wed Jul 25 11:12:13 CEST 2018, id=36c8a420-b91f-477c-88b4-59ca8c59c69e, user=krystina.morissette, nonce=-2015059461}
    SolrDocument{_uniqueKey=["krystina.morissette","9ab1c4be-6764-429b-baeb-923ae7139aa9"], expires=Wed Jul 25 11:45:34 CEST 2018, created=Wed Jul 25 11:15:34 CEST 2018, id=9ab1c4be-6764-429b-baeb-923ae7139aa9, user=krystina.morissette, nonce=-239263702}
    SolrDocument{_uniqueKey=["krystina.morissette","8bff6a10-06b4-4473-876d-8380af0568cc"], expires=Wed Jul 25 11:47:48 CEST 2018, created=Wed Jul 25 11:17:48 CEST 2018, id=8bff6a10-06b4-4473-876d-8380af0568cc, user=krystina.morissette, nonce=-658876494}
    SolrDocument{_uniqueKey=["krystina.morissette","3f011a59-5bdc-4b7e-b465-d83c29cb333f"], expires=Wed Jul 25 11:49:12 CEST 2018, created=Wed Jul 25 11:19:12 CEST 2018, id=3f011a59-5bdc-4b7e-b465-d83c29cb333f, user=krystina.morissette, nonce=-583776467}