Hi Solr Team,

Short question:

How can I systematically explore the solrj functionality/API?

Long question:

I am discovering solrj functionality and I am pretty much impressed what
solrj can do. What I am less impressed is my knowledge how to find what I
am looking for. On the positive side, one can relatively quickly find ways
to insert/delete/update/query docs using solrj (basically using google [1]
or from [2]). It is a rather simple task to get exposed to some admin
functionality through [3]. From this on, things are getting more difficult:
I was able to query for some admin infos by trial and error using this java
code:

ArrayList<String> urls = new ArrayList<>();
urls.add(solrUrl);
CloudSolrClient client = new CloudSolrClient.Builder(urls)
    .withConnectionTimeout(10000)
    .withSocketTimeout(60000)
    .build();
client.setDefaultCollection("tph");

final SolrRequest request = new CollectionAdminRequest.ClusterStatus();
final NamedList<Object> response = client.request(request);
final NamedList<Object> cluster  = (NamedList<Object>)
response.get("cluster");
final ArrayList<Object> nodes    = (ArrayList<Object>)
cluster.get("live_nodes");
final NamedList<Object> cols       = (NamedList<Object>)
cluster.get("collections");
final LinkedHashMap<String, Object> tph = (LinkedHashMap<String, Object>)
cols.get("tph");

and then looking at what the keys names are, etc. Things are becoming more
difficult here, as (1) lots of functionality hides behind generic "get"
methods and (2) The containers that are returned vary from NamedList, to
anything possible (arraylist, string, hashmap, etc.)

Getting the size of one of the index, e.g., with

ArrayList<String> urls = new ArrayList<>();
urls.add("http://localhost:8983/solr";);
CloudSolrClient client = new CloudSolrClient.Builder(urls)
    .withConnectionTimeout(10000)
    .withSocketTimeout(60000)
    .build();

client.setDefaultCollection("trans");

CoreAdminRequest request = new CoreAdminRequest();
request.setAction(CoreAdminAction.STATUS);
request.setCoreName("trans_shard2_replica_n4");

request.setIndexInfoNeeded(true);
CoreAdminResponse resp = request.process(client);

NamedList<Object> coreStatus =
resp.getCoreStatus("trans_shard2_replica_n4");
NamedList<Object> indexStats = (NamedList<Object>) coreStatus.get("index");
System.out.println(indexStats.get("sizeInBytes"));

is even more challenging to learn (how to) as one needs to google deeper
and deeper [4].

I also looked at the following books for systematic ways to learn solrj:

* Apache Solr 4 Cookbook,
* Apache Solr Search Patterns

Is there a simple and systematic way to get exposed to solrj and available
API/functionality?

Cheers,
Arturas

[1] http://www.baeldung.com/apache-solrj
[2] https://lucene.apache.org/solr/guide/7_2/using-solrj.html
[3]
https://lucene.apache.org/solr/7_2_0/solr-solrj/index.html?org/apache/solr/client/solrj/request/CollectionAdminRequest.ClusterStatus.html
[4]
https://www.programcreek.com/java-api-examples/?api=org.apache.solr.client.solrj.request.CoreAdminRequest

Reply via email to