Ravion, What's wrong with "update request"? Updating a document that does not exist... will add it.
-chris On 8/10/18 3:01 PM, ☼ R Nair wrote: > Do you feel that this is only partially complete? > > Best, Ravion > > On Fri, Aug 10, 2018, 1:37 PM ☼ R Nair <ravishankar.n...@gmail.com> wrote: > >> I saw this. Please provide for add. My issue is with add. There is no >> "AddRequesg". So how to do that, thanks >> >> Best Ravion >> >> On Fri, Aug 10, 2018, 12:58 PM Jason Gerlowski <gerlowsk...@gmail.com> >> wrote: >> >>> The "setBasicAuthCredentials" method works on all SolrRequest >>> implementations. There's a corresponding SolrRequest object for most >>> common Solr APIs. As you mentioned, I used QueryRequest above, but >>> the same approach works for any SolrRequest object. >>> >>> The specific one for indexing is "UpdateRequest". Here's a short example >>> below: >>> >>> final List<SolrInputDocument> docsToIndex = new ArrayList<>(); >>> ...Prepare your docs for indexing.... >>> final UpdateRequest update = new UpdateRequest(); >>> update.add(docsToIndex); >>> update.setBasicAuthCredentials("solr", "solrRocks"); >>> update.process(client, "techproducts"); >>> On Fri, Aug 10, 2018 at 12:47 PM ☼ R Nair <ravishankar.n...@gmail.com> >>> wrote: >>>> >>>> Hi Jason, >>>> >>>> Thanks for replying. >>>> >>>> I am adding a document, not querying. I am using 7.3 apis. Adding a >>>> document is done via solrclient.add(....). How to set authentication in >>>> this case? Seems I can't use SolrRequest. >>>> >>>> Thx, bye >>>> RAVION >>>> >>>> On Fri, Aug 10, 2018, 10:46 AM Jason Gerlowski <gerlowsk...@gmail.com> >>>> wrote: >>>> >>>>> I'd tried to type my previous SolrJ example snippet from memory. That >>>>> didn't work out so great. I've corrected it below: >>>>> >>>>> final List<String> zkUrls = new ArrayList<>(); >>>>> zkUrls.add("localhost:9983"); >>>>> final SolrClient client = new CloudSolrClient.Builder(zkUrls, >>>>> Optional.empty()).build(); >>>>> >>>>> final Map<String, String> queryParamMap = new HashMap<String, >>> String>(); >>>>> queryParamMap.put("q", "*:*"); >>>>> final QueryRequest query = new QueryRequest(new >>>>> MapSolrParams(queryParamMap)); >>>>> query.setBasicAuthCredentials("solr", "solrRocks"); >>>>> >>>>> query.process(client, "techproducts"); // or, client.request(query) >>>>> On Fri, Aug 10, 2018 at 10:12 AM Jason Gerlowski < >>> gerlowsk...@gmail.com> >>>>> wrote: >>>>>> >>>>>> I would also recommend removing the username/password from your Solr >>>>>> base URL. You might be able to get things working that way, but >>> it's >>>>>> definitely less common, and it wouldn't surprise me if some parts of >>>>>> SolrJ mishandle a URL in that format. Though that's just a hunch on >>>>>> my part. >>>>>> On Fri, Aug 10, 2018 at 10:09 AM Jason Gerlowski < >>> gerlowsk...@gmail.com> >>>>> wrote: >>>>>>> >>>>>>> Hi Ravion, >>>>>>> >>>>>>> (Note: I'm not sure what Solr version you're using. My answer >>> below >>>>>>> assumes Solr 7 APIs. These APIs don't change often, but you might >>>>>>> find them under slightly different names in your version of Solr.) >>>>>>> >>>>>>> SolrJ provides 2 ways (that I know of) to provide basic auth >>>>> credentials. >>>>>>> >>>>>>> The first (and IMO simplest) way is to use the >>> setBasicAuthCredentials >>>>>>> method on each individual SolrRequest. You can see what this >>> looks >>>>>>> like in the example below: >>>>>>> >>>>>>> final SolrClient client = new >>>>>>> >>> CloudSolrCLient.Builder(solrURLs).withHttpClient(myHttpClient).build(); >>>>>>> client.setDefaultCollection("collection1"); >>>>>>> SolrQuery req = new SolrQuery("*:*"); >>>>>>> req.setBasicAuthCredentials("yourUsername", "yourPassword); >>>>>>> client.query(req); >>>>>>> >>>>>>> SolrJ also has a PreemptiveBasicAuthClientBuilderFactory, which >>> reads >>>>>>> the username/password from Java system properties, and is used to >>>>>>> configure the HttpClient that SolrJ creates internally for sending >>>>>>> requests. I find this second method a little more complex, and it >>>>>>> looks like you're providing your own HttpClient anyways, so for >>> both >>>>>>> those reasons I'd recommend sticking with the first approach (at >>> least >>>>>>> while you're getting things up and running). >>>>>>> >>>>>>> Hope that helps. >>>>>>> >>>>>>> Best, >>>>>>> >>>>>>> Jason >>>>>>> >>>>>>> On Thu, Aug 9, 2018 at 5:47 PM ☼ R Nair < >>> ravishankar.n...@gmail.com> >>>>> wrote: >>>>>>>> >>>>>>>> Dear all, >>>>>>>> >>>>>>>> I have tried my best to do it - searched all Google. But I an=m >>>>>>>> unsuccessful. Kindly help. >>>>>>>> >>>>>>>> We have a solo environment. Its secured with userid and >>> password. >>>>>>>> >>>>>>>> I used >>>>>>>> >>>>> >>> CloudSolrClient.Builder(solrURLs).withHttpClient(mycloseablehttpclient) >>>>>>>> method to access it. The url is of the form >>> http:/userid:password@/ >>>>>>>> passionbytes.com/solr. I set defaultCollectionName later. >>>>>>>> In mycloseablehttpclient, I set Basic Authentication with >>>>>>>> CredentialProvider and gave url, port, userid and password. >>>>>>>> I have changed HTTPCLIENT to 4.4.1 version, even tried 4.5.3. >>>>>>>> >>>>>>>> Still, I get the JSON response from server, saying the URL did >>> not >>>>> return >>>>>>>> the state information from SOLR. It says HTTP 401 , >>> Authentication >>>>> Required. >>>>>>>> >>>>>>>> This is fourth day on this problem. Any help is appreciated. I >>> have >>>>> done >>>>>>>> whatever is available through documentation and/or Google. >>>>>>>> >>>>>>>> Best, >>>>>>>> Ravion >>>>> >>> >> >
signature.asc
Description: OpenPGP digital signature