Re: Upgrading solarj from 6.5.1 to 8.0.0
Hi Lahiru, I had a chance to refresh myself on how this works over the weekend. There are two ways in SolrJ to talk to a Solr protected by basic-auth: 1. The SolrRequest.setBasicAuthCredentials() method I mentioned before. This can be painful though, and isn't even possible in all usecases. 2. Configuring your client process with several System Properties. First, set the property "solr.httpclient.builder.factory" to "org.apache.solr.client.solrj.impl.PreemptiveBasicAuthClientBuilderFactory" to tell SolrJ that you want any SolrClient's setup to use basic-auth. Once that is setup, you can specify your credentials in one of two ways. If you're OK with the auth credentials appearing in the command line for your process, you can set the "basicauth" system property to a value of the form ":". A slightly more approach is to have SolrJ read the credentials from a file. You can choose this approach by setting the "solr.httpclient.config" system property and giving it the full path to an accessible properties file. You then need to create the properties file, specifying your username and password using the "httpBasicAuthUser" and "httpBasicAuthPassword" properties. Currently (2) is not documented in our Solr Ref Guide, though it really should be since it's the most practical way to setup auth. Hope that helps, Jason On Thu, Mar 21, 2019 at 1:25 PM Erick Erickson wrote: > > One tangent just so you’re aware. You _must_ re-index from scratch. Lucene 8x > will refuse to open an index that was _ever_ touched by Solr 6. > > Best, > Erick > > > On Mar 21, 2019, at 8:26 AM, Lahiru Jayasekera > > wrote: > > > > Hi Jason, > > Thanks for the response. I saw the method of setting credentials based on > > individual request. > > But I need to set the credentials at solrclient level. If you remember the > > way to do it please let me know. > > > > Thanks > > > > On Thu, Mar 21, 2019 at 8:26 PM Jason Gerlowski > > wrote: > > > >> You should be able to set credentials on individual requests with the > >> SolrRequest.setBasicAuthCredentials() method. That's the method > >> suggested by the latest Solr ref guide at least: > >> > >> https://lucene.apache.org/solr/guide/7_7/basic-authentication-plugin.html#using-basic-auth-with-solrj > >> > >> There might be a way to set the credentials on the client itself, but > >> I can't think of it at the moment. > >> > >> Hope that helps, > >> > >> Jason > >> > >> On Thu, Mar 21, 2019 at 2:34 AM Lahiru Jayasekera > >> wrote: > >>> > >>> Hi all, > >>> I need help implementing the following code in solarj 8.0.0. > >>> > >>> private SolrClient server, adminServer; > >>> > >>> this.adminServer = new HttpSolrClient(SolrClientUrl); > >>> this.server = new HttpSolrClient( SolrClientUrl + "/" + > >> mapping.getCoreName() ); > >>> if (serverUserAuth) { > >>> HttpClientUtil.setBasicAuth( > >>> (DefaultHttpClient) ((HttpSolrClient) adminServer).getHttpClient(), > >>> serverUsername, serverPassword); > >>> HttpClientUtil.setBasicAuth( > >>> (DefaultHttpClient) ((HttpSolrClient) server).getHttpClient(), > >>> serverUsername, serverPassword); > >>> } > >>> > >>> > >>> I could get the solarClients as following > >>> > >>> this.adminServer = new HttpSolrClient.Builder(SolrClientUrl).build(); > >>> this.server = new HttpSolrClient.Builder( SolrClientUrl + "/" + > >>> mapping.getCoreName() ).build(); > >>> > >>> But i can't find a way to implement basic authentication. I think that it > >>> can be done via SolrHttpClientBuilder. > >>> Can you please help me to solve this? > >>> > >>> Thank and regards > >>> Lahiru > >>> -- > >>> Lahiru Jayasekara > >>> Batch 15 > >>> Faculty of Information Technology > >>> University of Moratuwa > >>> 0716492170 > >> > > > > > > -- > > Lahiru Jayasekara > > Batch 15 > > Faculty of Information Technology > > University of Moratuwa > > 0716492170 >
Re: Upgrading solarj from 6.5.1 to 8.0.0
One tangent just so you’re aware. You _must_ re-index from scratch. Lucene 8x will refuse to open an index that was _ever_ touched by Solr 6. Best, Erick > On Mar 21, 2019, at 8:26 AM, Lahiru Jayasekera > wrote: > > Hi Jason, > Thanks for the response. I saw the method of setting credentials based on > individual request. > But I need to set the credentials at solrclient level. If you remember the > way to do it please let me know. > > Thanks > > On Thu, Mar 21, 2019 at 8:26 PM Jason Gerlowski > wrote: > >> You should be able to set credentials on individual requests with the >> SolrRequest.setBasicAuthCredentials() method. That's the method >> suggested by the latest Solr ref guide at least: >> >> https://lucene.apache.org/solr/guide/7_7/basic-authentication-plugin.html#using-basic-auth-with-solrj >> >> There might be a way to set the credentials on the client itself, but >> I can't think of it at the moment. >> >> Hope that helps, >> >> Jason >> >> On Thu, Mar 21, 2019 at 2:34 AM Lahiru Jayasekera >> wrote: >>> >>> Hi all, >>> I need help implementing the following code in solarj 8.0.0. >>> >>> private SolrClient server, adminServer; >>> >>> this.adminServer = new HttpSolrClient(SolrClientUrl); >>> this.server = new HttpSolrClient( SolrClientUrl + "/" + >> mapping.getCoreName() ); >>> if (serverUserAuth) { >>> HttpClientUtil.setBasicAuth( >>> (DefaultHttpClient) ((HttpSolrClient) adminServer).getHttpClient(), >>> serverUsername, serverPassword); >>> HttpClientUtil.setBasicAuth( >>> (DefaultHttpClient) ((HttpSolrClient) server).getHttpClient(), >>> serverUsername, serverPassword); >>> } >>> >>> >>> I could get the solarClients as following >>> >>> this.adminServer = new HttpSolrClient.Builder(SolrClientUrl).build(); >>> this.server = new HttpSolrClient.Builder( SolrClientUrl + "/" + >>> mapping.getCoreName() ).build(); >>> >>> But i can't find a way to implement basic authentication. I think that it >>> can be done via SolrHttpClientBuilder. >>> Can you please help me to solve this? >>> >>> Thank and regards >>> Lahiru >>> -- >>> Lahiru Jayasekara >>> Batch 15 >>> Faculty of Information Technology >>> University of Moratuwa >>> 0716492170 >> > > > -- > Lahiru Jayasekara > Batch 15 > Faculty of Information Technology > University of Moratuwa > 0716492170
Re: Upgrading solarj from 6.5.1 to 8.0.0
Hi Jason, Thanks for the response. I saw the method of setting credentials based on individual request. But I need to set the credentials at solrclient level. If you remember the way to do it please let me know. Thanks On Thu, Mar 21, 2019 at 8:26 PM Jason Gerlowski wrote: > You should be able to set credentials on individual requests with the > SolrRequest.setBasicAuthCredentials() method. That's the method > suggested by the latest Solr ref guide at least: > > https://lucene.apache.org/solr/guide/7_7/basic-authentication-plugin.html#using-basic-auth-with-solrj > > There might be a way to set the credentials on the client itself, but > I can't think of it at the moment. > > Hope that helps, > > Jason > > On Thu, Mar 21, 2019 at 2:34 AM Lahiru Jayasekera > wrote: > > > > Hi all, > > I need help implementing the following code in solarj 8.0.0. > > > > private SolrClient server, adminServer; > > > > this.adminServer = new HttpSolrClient(SolrClientUrl); > > this.server = new HttpSolrClient( SolrClientUrl + "/" + > mapping.getCoreName() ); > > if (serverUserAuth) { > > HttpClientUtil.setBasicAuth( > > (DefaultHttpClient) ((HttpSolrClient) adminServer).getHttpClient(), > > serverUsername, serverPassword); > > HttpClientUtil.setBasicAuth( > > (DefaultHttpClient) ((HttpSolrClient) server).getHttpClient(), > > serverUsername, serverPassword); > > } > > > > > > I could get the solarClients as following > > > > this.adminServer = new HttpSolrClient.Builder(SolrClientUrl).build(); > > this.server = new HttpSolrClient.Builder( SolrClientUrl + "/" + > > mapping.getCoreName() ).build(); > > > > But i can't find a way to implement basic authentication. I think that it > > can be done via SolrHttpClientBuilder. > > Can you please help me to solve this? > > > > Thank and regards > > Lahiru > > -- > > Lahiru Jayasekara > > Batch 15 > > Faculty of Information Technology > > University of Moratuwa > > 0716492170 > -- Lahiru Jayasekara Batch 15 Faculty of Information Technology University of Moratuwa 0716492170
Re: Upgrading solarj from 6.5.1 to 8.0.0
You should be able to set credentials on individual requests with the SolrRequest.setBasicAuthCredentials() method. That's the method suggested by the latest Solr ref guide at least: https://lucene.apache.org/solr/guide/7_7/basic-authentication-plugin.html#using-basic-auth-with-solrj There might be a way to set the credentials on the client itself, but I can't think of it at the moment. Hope that helps, Jason On Thu, Mar 21, 2019 at 2:34 AM Lahiru Jayasekera wrote: > > Hi all, > I need help implementing the following code in solarj 8.0.0. > > private SolrClient server, adminServer; > > this.adminServer = new HttpSolrClient(SolrClientUrl); > this.server = new HttpSolrClient( SolrClientUrl + "/" + mapping.getCoreName() > ); > if (serverUserAuth) { > HttpClientUtil.setBasicAuth( > (DefaultHttpClient) ((HttpSolrClient) adminServer).getHttpClient(), > serverUsername, serverPassword); > HttpClientUtil.setBasicAuth( > (DefaultHttpClient) ((HttpSolrClient) server).getHttpClient(), > serverUsername, serverPassword); > } > > > I could get the solarClients as following > > this.adminServer = new HttpSolrClient.Builder(SolrClientUrl).build(); > this.server = new HttpSolrClient.Builder( SolrClientUrl + "/" + > mapping.getCoreName() ).build(); > > But i can't find a way to implement basic authentication. I think that it > can be done via SolrHttpClientBuilder. > Can you please help me to solve this? > > Thank and regards > Lahiru > -- > Lahiru Jayasekara > Batch 15 > Faculty of Information Technology > University of Moratuwa > 0716492170
Upgrading solarj from 6.5.1 to 8.0.0
Hi all, I need help implementing the following code in solarj 8.0.0. private SolrClient server, adminServer; this.adminServer = new HttpSolrClient(SolrClientUrl); this.server = new HttpSolrClient( SolrClientUrl + "/" + mapping.getCoreName() ); if (serverUserAuth) { HttpClientUtil.setBasicAuth( (DefaultHttpClient) ((HttpSolrClient) adminServer).getHttpClient(), serverUsername, serverPassword); HttpClientUtil.setBasicAuth( (DefaultHttpClient) ((HttpSolrClient) server).getHttpClient(), serverUsername, serverPassword); } I could get the solarClients as following this.adminServer = new HttpSolrClient.Builder(SolrClientUrl).build(); this.server = new HttpSolrClient.Builder( SolrClientUrl + "/" + mapping.getCoreName() ).build(); But i can't find a way to implement basic authentication. I think that it can be done via SolrHttpClientBuilder. Can you please help me to solve this? Thank and regards Lahiru -- Lahiru Jayasekara Batch 15 Faculty of Information Technology University of Moratuwa 0716492170