The usual solution to that is to have dynamic fields with suffixes
indicating the types. So, your int fields are mapped to *_i, your date
fields to *_d.

Solr has schemaless support, but it is auto-detect for now. Creating
fields of particular types via API I think is in JIRA on the trunk for
5.0.

Regards,
   Alex.
Personal: http://www.outerthoughts.com/ and @arafalov
Solr resources and newsletter: http://www.solr-start.com/ and @solrstart
Solr popularizers community: https://www.linkedin.com/groups?gid=6713853


On 6 November 2014 10:04, Andreas Hubold <andreas.hub...@coremedia.com> wrote:
> Hi,
>
> I have a use-case where Java applications need to create Solr indexes
> dynamically. Schema fields of these indexes differ and should be defined by
> the Java application upon creation.
>
> So I'm trying to use the Core Admin API [1] to create new cores and the
> Schema API [2] to define fields. When creating a core, I have to specify
> solrconfig.xml (with enabled ManagedIndexSchemaFactory) and the schema to
> start with. I thought it would be a good idea to use a named config sets [3]
> for this purpose:
>
> curl
> 'http://localhost:8082/solr/admin/cores?action=CREATE&name=m1&instanceDir=cores/m1&configSet=myconfig&dataDir=data'
>
> But when I add a field to the core "m1", the field actually gets added to
> the config set. Is this a bug of feature?
>
> curl http://localhost:8082/solr/m1/schema/fields -X POST -H
> 'Content-type:application/json'
>   --data-binary '[{
>         "name":"foo",
>         "type":"tdate",
>         "stored":true
>     }]'
>
> All cores created from the config set "myconfig" will get the new field
> "foo" in their schema. So this obviously does not work to create cores with
> different schema.
>
> I also tried to use the config/schema parameters of the CREATE core command
> (instead of config sets) to specify some existing solrconfig.xml/schema.xml.
> I tried relative paths here (e.g. some level upwards) but I could not get it
> to work. The documentation [1] tells me that relative paths are allowed.
> Should this work?
>
> Next thing that would come to my mind is to use dynamic fields instead of a
> correct managed schema, but that does not sound as nice.
> Or maybe I should implement a custom CoreAdminHandler which takes list of
> field definitions, if that's possible somehow...?
>
> I don't know. What's your recommended approach?
>
> We're using Solr 4.10.1 non-SolrCloud. Would this be simpler or different
> with SolrCloud?
>
> Thank you,
> Andreas
>
> [1]
> https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-CREATE
> [2]
> https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-Modifytheschema
> [3] https://cwiki.apache.org/confluence/display/solr/Config+Sets

Reply via email to