Sort of answering my own question here too...

It seems like I need to get the current core, and use that to instantiate a new SolrCore with the same exact config, other than the dataDir.

The documentation for SolrCore()'s constructor says:

"If a core with the same name already exists, it will be stopped and replaced by this one"

But it's unclear to me whether this will do a graceful swap (like what I want) or a hard shutdown of the old core.

Thanks,

-- Ken

On May 22, 2010, at 11:25am, Ryan McKinley wrote:

accidentally hit send...

Eache core can have the dataDir set explicitly.

<core name="core0" instanceDir="core0">
  <property name="dataDir" value="/data/core0" />
</core>
<core name="core1" instanceDir="core1">
  <property name="dataDir" value="/data/core1" />
</core>

If you want to do this with solrj, you would need to manipulate the
CoreDescriptor objects.

I'm hoping somebody can clarify what's up with the CoreDescriptor class, since there's not much documentation.

As far as I can tell, when you create a new SolrCore, it saves off the CoreDescriptor you pass in, and does nothing with it.

The constructor for SolrCore also takes a datadir param, so I don't see how the CoreDescriptor's dataDir gets used during construction.

And changing the CoreDescriptor's dataDir has no effect, since it's essentially a POJO.

So how would one go about changing the dataDir for a core, in a multi- core setup?

Thanks,

-- Ken

On Sat, May 22, 2010 at 2:24 PM, Ryan McKinley <ryan...@gmail.com> wrote:
Check:
http://wiki.apache.org/solr/CoreAdmin

Unless I'm missing something, I think you should be able to sort what you need


On Fri, May 21, 2010 at 7:55 PM, Ken Krugler
<kkrugler_li...@transpac.com> wrote:
I've got a situation where my data directory (a) needs to live elsewhere besides inside of Solr home, (b) moves to a different location when updating indexes, and (c) setting up a symlink from <solr_home>/data isn't a great
option.

So what's the best approach to making this work with SolrJ? The low-level
solution seems to be

- create my own SolrCore instance, where I specify the data directory
- use that to update the CoreContainer
- create a new EmbeddedSolrServer

But recreating the EmbeddedSolrServer with each index update feels wrong, and I'd like to avoid mucking around with low-level SolrCore instantiation.

Any other approaches?

Thanks,

-- Ken

--------------------------------------------
Ken Krugler
+1 530-210-6378
http://bixolabs.com
e l a s t i c   w e b   m i n i n g







--------------------------------------------
Ken Krugler
+1 530-210-6378
http://bixolabs.com
e l a s t i c   w e b   m i n i n g




Reply via email to