You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Alessandro Benedetti <be...@gmail.com> on 2014/07/08 11:53:54 UTC

[Solr Schema API] SolrJ Access

Hi guys,
wondering if there is any proper way to access Schema API via Solrj.

Of course is possible to reach them in Java with a specific Http Request,
but in this way, using SolrCloud for example we become coupled to one
specific instance ( and we don't want) .

Code Example :

            HttpResponse httpResponse;
>             String url=this.solrBase+"/"+core+ SCHEMA_SOLR_FIELDS_ENDPOINT
> +fieldName;
>             HttpPut httpPut = new HttpPut(url);
>             StringEntity entity = new StringEntity(
>                     "{\"type\":\"text_general\",\"stored\":\"true\"}" ,
>                     ContentType.APPLICATION_JSON);
>              httpPut.setEntity( entity );
>              HttpClient client=new DefaultHttpClient();
>              response = client.execute(httpPut);


Any suggestion ?
In my opinion should be interesting to have some auxiliary method in
SolrServer if it's not there yet.

Cheers

-- 
--------------------------

Benedetti Alessandro
Visiting card : http://about.me/alessandro_benedetti

"Tyger, tyger burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?"

William Blake - Songs of Experience -1794 England

Re: [Solr Schema API] SolrJ Access

Posted by Alessandro Benedetti <be...@gmail.com>.
I solved the PUT issue using a post ( with adding of more than one field) :

             ContentStreamUpdateRequest contentStreamUpdateRequest =
>                 new ContentStreamUpdateRequest(
> SCHEMA_SOLR_FIELDS_ENDPOINT);
>             SolrServer solrServer = this.getCore( core );
>             contentStreamUpdateRequest.addContentStream(new
> ContentStreamBase.ByteArrayStream(jsonFields.getBytes(),"data-binary"));
>             UpdateResponse process = contentStreamUpdateRequest.process(
> solrServer );


The EmbeddedSolrServer is still a problem.

Cheers


2014-07-09 15:55 GMT+01:00 Alessandro Benedetti <be...@gmail.com>
:

> mmm wondering how to pass the payload for the PUT using that structure
> with SolrQuery...
>
>
> 2014-07-09 15:42 GMT+01:00 Alessandro Benedetti <
> benedetti.alex85@gmail.com>:
>
> Thank's Elaine !
>> Worked for the GET Method !
>> I will test soon with the PUT method :)
>>
>> One strange thing is that is working with a real Solr Instance but not
>> with an Embedded SolrServer ...
>> probably it's matter of dependencies, I let you know...
>>
>> Many thanks
>>
>> Cheers
>>
>>
>> 2014-07-08 21:59 GMT+01:00 Cario, Elaine <El...@wolterskluwer.com>
>> :
>>
>> Alessandro,
>>>
>>> I just got this to work myself:
>>>
>>>         public static final String DEFINED_FIELDS_API = "/schema/fields";
>>>         public static final String DYNAMIC_FIELDS_API =
>>> "/schema/dynamicfields";
>>> ...
>>>         // just get a connection to Solr as usual (the factory is mine -
>>> it will use CloudSolrServer or HttpSolrServer depending on if we're using
>>> SolrCloud or not)
>>>         SolrClient client =
>>> SolrClientFactory.getSolrClientInstance(CLOUD_ENABLED);
>>>         SolrServer solrConn = client.getConnection(SOLR_URL, collection);
>>>
>>>         SolrQuery query = new SolrQuery();
>>>         if (dynamicFields)
>>>                 query.setRequestHandler(DYNAMIC_FIELDS_API);
>>>         else
>>>                 query.setRequestHandler(DEFINED_FIELDS_API);
>>>         query.setParam("showDefaults", true);
>>>
>>>         QueryResponse response = solrConn.query(query)
>>>
>>> Then you've got to parse the response using NamedList etc.etc.
>>>
>>> -----Original Message-----
>>> From: Alessandro Benedetti [mailto:benedetti.alex85@gmail.com]
>>> Sent: Tuesday, July 08, 2014 5:54 AM
>>> To: solr-user@lucene.apache.org
>>> Subject: [Solr Schema API] SolrJ Access
>>>
>>> Hi guys,
>>> wondering if there is any proper way to access Schema API via Solrj.
>>>
>>> Of course is possible to reach them in Java with a specific Http
>>> Request, but in this way, using SolrCloud for example we become coupled to
>>> one specific instance ( and we don't want) .
>>>
>>> Code Example :
>>>
>>>             HttpResponse httpResponse;
>>> >             String url=this.solrBase+"/"+core+
>>> > SCHEMA_SOLR_FIELDS_ENDPOINT
>>> > +fieldName;
>>> >             HttpPut httpPut = new HttpPut(url);
>>> >             StringEntity entity = new StringEntity(
>>> >                     "{\"type\":\"text_general\",\"stored\":\"true\"}" ,
>>> >                     ContentType.APPLICATION_JSON);
>>> >              httpPut.setEntity( entity );
>>> >              HttpClient client=new DefaultHttpClient();
>>> >              response = client.execute(httpPut);
>>>
>>>
>>> Any suggestion ?
>>> In my opinion should be interesting to have some auxiliary method in
>>> SolrServer if it's not there yet.
>>>
>>> Cheers
>>>
>>> --
>>> --------------------------
>>>
>>> Benedetti Alessandro
>>> Visiting card : http://about.me/alessandro_benedetti
>>>
>>> "Tyger, tyger burning bright
>>> In the forests of the night,
>>> What immortal hand or eye
>>> Could frame thy fearful symmetry?"
>>>
>>> William Blake - Songs of Experience -1794 England
>>>
>>
>>
>>
>> --
>> --------------------------
>>
>> Benedetti Alessandro
>> Visiting card : http://about.me/alessandro_benedetti
>>
>> "Tyger, tyger burning bright
>> In the forests of the night,
>> What immortal hand or eye
>> Could frame thy fearful symmetry?"
>>
>> William Blake - Songs of Experience -1794 England
>>
>
>
>
> --
> --------------------------
>
> Benedetti Alessandro
> Visiting card : http://about.me/alessandro_benedetti
>
> "Tyger, tyger burning bright
> In the forests of the night,
> What immortal hand or eye
> Could frame thy fearful symmetry?"
>
> William Blake - Songs of Experience -1794 England
>



-- 
--------------------------

Benedetti Alessandro
Visiting card : http://about.me/alessandro_benedetti

"Tyger, tyger burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?"

William Blake - Songs of Experience -1794 England

Re: [Solr Schema API] SolrJ Access

Posted by Alessandro Benedetti <be...@gmail.com>.
mmm wondering how to pass the payload for the PUT using that structure with
SolrQuery...


2014-07-09 15:42 GMT+01:00 Alessandro Benedetti <be...@gmail.com>
:

> Thank's Elaine !
> Worked for the GET Method !
> I will test soon with the PUT method :)
>
> One strange thing is that is working with a real Solr Instance but not
> with an Embedded SolrServer ...
> probably it's matter of dependencies, I let you know...
>
> Many thanks
>
> Cheers
>
>
> 2014-07-08 21:59 GMT+01:00 Cario, Elaine <El...@wolterskluwer.com>:
>
> Alessandro,
>>
>> I just got this to work myself:
>>
>>         public static final String DEFINED_FIELDS_API = "/schema/fields";
>>         public static final String DYNAMIC_FIELDS_API =
>> "/schema/dynamicfields";
>> ...
>>         // just get a connection to Solr as usual (the factory is mine -
>> it will use CloudSolrServer or HttpSolrServer depending on if we're using
>> SolrCloud or not)
>>         SolrClient client =
>> SolrClientFactory.getSolrClientInstance(CLOUD_ENABLED);
>>         SolrServer solrConn = client.getConnection(SOLR_URL, collection);
>>
>>         SolrQuery query = new SolrQuery();
>>         if (dynamicFields)
>>                 query.setRequestHandler(DYNAMIC_FIELDS_API);
>>         else
>>                 query.setRequestHandler(DEFINED_FIELDS_API);
>>         query.setParam("showDefaults", true);
>>
>>         QueryResponse response = solrConn.query(query)
>>
>> Then you've got to parse the response using NamedList etc.etc.
>>
>> -----Original Message-----
>> From: Alessandro Benedetti [mailto:benedetti.alex85@gmail.com]
>> Sent: Tuesday, July 08, 2014 5:54 AM
>> To: solr-user@lucene.apache.org
>> Subject: [Solr Schema API] SolrJ Access
>>
>> Hi guys,
>> wondering if there is any proper way to access Schema API via Solrj.
>>
>> Of course is possible to reach them in Java with a specific Http Request,
>> but in this way, using SolrCloud for example we become coupled to one
>> specific instance ( and we don't want) .
>>
>> Code Example :
>>
>>             HttpResponse httpResponse;
>> >             String url=this.solrBase+"/"+core+
>> > SCHEMA_SOLR_FIELDS_ENDPOINT
>> > +fieldName;
>> >             HttpPut httpPut = new HttpPut(url);
>> >             StringEntity entity = new StringEntity(
>> >                     "{\"type\":\"text_general\",\"stored\":\"true\"}" ,
>> >                     ContentType.APPLICATION_JSON);
>> >              httpPut.setEntity( entity );
>> >              HttpClient client=new DefaultHttpClient();
>> >              response = client.execute(httpPut);
>>
>>
>> Any suggestion ?
>> In my opinion should be interesting to have some auxiliary method in
>> SolrServer if it's not there yet.
>>
>> Cheers
>>
>> --
>> --------------------------
>>
>> Benedetti Alessandro
>> Visiting card : http://about.me/alessandro_benedetti
>>
>> "Tyger, tyger burning bright
>> In the forests of the night,
>> What immortal hand or eye
>> Could frame thy fearful symmetry?"
>>
>> William Blake - Songs of Experience -1794 England
>>
>
>
>
> --
> --------------------------
>
> Benedetti Alessandro
> Visiting card : http://about.me/alessandro_benedetti
>
> "Tyger, tyger burning bright
> In the forests of the night,
> What immortal hand or eye
> Could frame thy fearful symmetry?"
>
> William Blake - Songs of Experience -1794 England
>



-- 
--------------------------

Benedetti Alessandro
Visiting card : http://about.me/alessandro_benedetti

"Tyger, tyger burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?"

William Blake - Songs of Experience -1794 England

Re: [Solr Schema API] SolrJ Access

Posted by Alessandro Benedetti <be...@gmail.com>.
Thank's Elaine !
Worked for the GET Method !
I will test soon with the PUT method :)

One strange thing is that is working with a real Solr Instance but not with
an Embedded SolrServer ...
probably it's matter of dependencies, I let you know...

Many thanks

Cheers


2014-07-08 21:59 GMT+01:00 Cario, Elaine <El...@wolterskluwer.com>:

> Alessandro,
>
> I just got this to work myself:
>
>         public static final String DEFINED_FIELDS_API = "/schema/fields";
>         public static final String DYNAMIC_FIELDS_API =
> "/schema/dynamicfields";
> ...
>         // just get a connection to Solr as usual (the factory is mine -
> it will use CloudSolrServer or HttpSolrServer depending on if we're using
> SolrCloud or not)
>         SolrClient client =
> SolrClientFactory.getSolrClientInstance(CLOUD_ENABLED);
>         SolrServer solrConn = client.getConnection(SOLR_URL, collection);
>
>         SolrQuery query = new SolrQuery();
>         if (dynamicFields)
>                 query.setRequestHandler(DYNAMIC_FIELDS_API);
>         else
>                 query.setRequestHandler(DEFINED_FIELDS_API);
>         query.setParam("showDefaults", true);
>
>         QueryResponse response = solrConn.query(query)
>
> Then you've got to parse the response using NamedList etc.etc.
>
> -----Original Message-----
> From: Alessandro Benedetti [mailto:benedetti.alex85@gmail.com]
> Sent: Tuesday, July 08, 2014 5:54 AM
> To: solr-user@lucene.apache.org
> Subject: [Solr Schema API] SolrJ Access
>
> Hi guys,
> wondering if there is any proper way to access Schema API via Solrj.
>
> Of course is possible to reach them in Java with a specific Http Request,
> but in this way, using SolrCloud for example we become coupled to one
> specific instance ( and we don't want) .
>
> Code Example :
>
>             HttpResponse httpResponse;
> >             String url=this.solrBase+"/"+core+
> > SCHEMA_SOLR_FIELDS_ENDPOINT
> > +fieldName;
> >             HttpPut httpPut = new HttpPut(url);
> >             StringEntity entity = new StringEntity(
> >                     "{\"type\":\"text_general\",\"stored\":\"true\"}" ,
> >                     ContentType.APPLICATION_JSON);
> >              httpPut.setEntity( entity );
> >              HttpClient client=new DefaultHttpClient();
> >              response = client.execute(httpPut);
>
>
> Any suggestion ?
> In my opinion should be interesting to have some auxiliary method in
> SolrServer if it's not there yet.
>
> Cheers
>
> --
> --------------------------
>
> Benedetti Alessandro
> Visiting card : http://about.me/alessandro_benedetti
>
> "Tyger, tyger burning bright
> In the forests of the night,
> What immortal hand or eye
> Could frame thy fearful symmetry?"
>
> William Blake - Songs of Experience -1794 England
>



-- 
--------------------------

Benedetti Alessandro
Visiting card : http://about.me/alessandro_benedetti

"Tyger, tyger burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?"

William Blake - Songs of Experience -1794 England

RE: [Solr Schema API] SolrJ Access

Posted by "Cario, Elaine" <El...@wolterskluwer.com>.
Alessandro,

I just got this to work myself:

	public static final String DEFINED_FIELDS_API = "/schema/fields";
	public static final String DYNAMIC_FIELDS_API = "/schema/dynamicfields";
...
	// just get a connection to Solr as usual (the factory is mine - it will use CloudSolrServer or HttpSolrServer depending on if we're using SolrCloud or not)
	SolrClient client = SolrClientFactory.getSolrClientInstance(CLOUD_ENABLED);
	SolrServer solrConn = client.getConnection(SOLR_URL, collection);
	
	SolrQuery query = new SolrQuery();
	if (dynamicFields)
		query.setRequestHandler(DYNAMIC_FIELDS_API);
	else
		query.setRequestHandler(DEFINED_FIELDS_API);
	query.setParam("showDefaults", true);

	QueryResponse response = solrConn.query(query)

Then you've got to parse the response using NamedList etc.etc.

-----Original Message-----
From: Alessandro Benedetti [mailto:benedetti.alex85@gmail.com] 
Sent: Tuesday, July 08, 2014 5:54 AM
To: solr-user@lucene.apache.org
Subject: [Solr Schema API] SolrJ Access

Hi guys,
wondering if there is any proper way to access Schema API via Solrj.

Of course is possible to reach them in Java with a specific Http Request, but in this way, using SolrCloud for example we become coupled to one specific instance ( and we don't want) .

Code Example :

            HttpResponse httpResponse;
>             String url=this.solrBase+"/"+core+ 
> SCHEMA_SOLR_FIELDS_ENDPOINT
> +fieldName;
>             HttpPut httpPut = new HttpPut(url);
>             StringEntity entity = new StringEntity(
>                     "{\"type\":\"text_general\",\"stored\":\"true\"}" ,
>                     ContentType.APPLICATION_JSON);
>              httpPut.setEntity( entity );
>              HttpClient client=new DefaultHttpClient();
>              response = client.execute(httpPut);


Any suggestion ?
In my opinion should be interesting to have some auxiliary method in SolrServer if it's not there yet.

Cheers

--
--------------------------

Benedetti Alessandro
Visiting card : http://about.me/alessandro_benedetti

"Tyger, tyger burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?"

William Blake - Songs of Experience -1794 England