Erick, are you sure that configSets don't apply to single-node Solr instances?
https://cwiki.apache.org/confluence/display/solr/Config+Sets I don't see anything about Solr cloud there. Also, "configSet" is a documented argument to the Core Admin API: https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-CREATE And one of the few things [I thought] I knew about "cloud" vs "non cloud" setups was the Collections API is for cloud and Cores API is for non cloud, right? So why would the non-cloud API take a cloud-only argument? On Thu, Mar 26, 2015 at 1:16 PM, Mark E. Haase <meha...@gmail.com> wrote: > Okay, thanks for the feedback. I'll admit that I do find the cloud vs > non-cloud deployment options a constant source of confusion, not the least > of which is due to the name. If I run a single Solr instance on EC2, that's > not "cloud", but if I run a few instances with ZK on my local LAN, that is > "cloud". Mmmkay. > > I can't imagine why the API documentation wouldn't mention that the API > can't actually do the thing it's supposed to do (create a core). What's the > purpose of having an HTTP API if I'm expected to already have write access > to the host's file system to use it? Maybe its intended as private API? It > should only be used by Solr itself, e.g. `solr create -c foo` uses the > Cores Admin API to do some (but not all) of its work. But if that's the > case, then the API docs should say that. > > From an API consumer's point of view, I'm not really interested in being > forced to learn the history of the project to use the API. The whole point > of creating APIs is to abstract out details that the caller doesn't need to > know, and yet this API requires an understanding of Solr's internal file > structure and history of the project? > > Yikes. > > > On Thu, Mar 26, 2015 at 12:56 PM, Erick Erickson <erickerick...@gmail.com> > wrote: > >> Ok, you're being confused by cloud, non cloud and all that kinda stuff.... >> >> Configsets are SolrCloud only, so forget them since you specified it's >> not SolrCloud. >> >> bq: surely the HTTP API doesn't require the caller to create a >> directory and copy files first, does it >> >> In fact, yes. The thing to remember here is that you're using a much >> older approach that had its roots in the pre-cloud days. The problem >> is how do you insure that the configurations are on the node you're >> creating the core on? The whole configsets discussion is an attempt to >> solve that in SolrCloud by putting the configs in a place any Solr >> instance can find them, namely Zookeeper. >> >> But in non-cloud, there's no central repository. You could be firing >> the query from node X and creating the core on node Y. So Solr expects >> the config files to already be in place; you have to manually copy >> them to node Y anyway, why not copy them to the place they'll be >> needed? >> >> The scripts make an assumption that you're running on the same node >> you're running the scripts for quick-start purposes. >> >> Best, >> Erick >> >> On Thu, Mar 26, 2015 at 9:24 AM, Mark E. Haase <meha...@gmail.com> wrote: >> > I can't get the Core Admin API to work. I have a brand new installation >> of >> > Solr 5.0.0 (in non-cloud mode). I installed using the installation >> script >> > (a nice addition!) with default options, so I have Solr in /opt/solr and >> > its data in /var/solr. >> > >> > Here's what I'm trying: >> > >> > curl ' >> http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core >> > ' >> > >> > But I get this error: >> > >> > Error CREATEing SolrCore 'new_core': Unable to create core >> [new_core] >> > Caused by: Can't find resource 'solrconfig.xml' in classpath or >> > '/var/solr/data/new_core/conf' >> > >> > Solr isn't even creating /var/solr/data/new_core, which I guess is the >> root >> > of the problem. But /var/solr is owned by the solr user and I can do >> `sudo >> > -u solr mkdir /var/solr/data/new_core` just fine. So why isn't Solr >> making >> > this directory? >> > >> > I see that 'instanceDir' is required, but I don't get an error message >> if I >> > *don't* use it, so I'm not sure how required it actually is. I'm also >> not >> > sure if its supposed to be a full path or a relative path or what, so >> here >> > are a couple of other guesses at the correct incantation: >> > >> > curl ' >> > >> http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core&instanceDir=new_core >> > ' >> > curl ' >> > >> http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core&instanceDir=/var/solr/data/new_core >> > ' >> > >> > These both return the same error message as my first try, so no dice... >> > >> > FWIW, I get the same error message even if I try doing this with the >> Solr >> > Admin GUI so I'm really puzzled. Is the GUI supposed to work? >> > >> > I found a thread on Stack Overflow about this same problem ( >> > http://stackoverflow.com/a/28945428/122763) that suggests using >> configSet. >> > Okay, the installer put some configs sets in >> > /opt/solr/server /opt/solr/server/solr/configsets, and the >> 'basic_config' >> > config set has a solrconfig.xml in it, so maybe that would solve my >> > solrconfig.xml error? >> > >> > If I compare the HTTP API to the `solr create -c foo` script, it appears >> > that the script creates the instance directory and copies in conf files >> *before >> > *it calls the HTTP API... surely the HTTP API doesn't require the >> caller to >> > create a directory and copy files first, does it? >> > >> > -- >> > Mark E. Haase >> > > > > -- > Mark E. Haase > 202-815-0201 > -- Mark E. Haase 202-815-0201