chris544
chris544

Reputation: 889

Using schema.xml instead of managed schema with Solr 5.1.X

I am trying to use schema.xml with the latest version of Solr (5.1.0). It seems that by default Solr 5.1.0 uses managed schema, but I would like to use schema.xml for a specific collection.

So I create a new collection (using solr create -c my_collection on windows and copy schema.xml from

server\solr\configsets\basic_configs\conf\schema.xml

to

server\solr\my_collection\conf\schema.xml

After that I change settings in

server\solr\my_collection\conf\solrconfig.xml 

to use

<schemaFactory class="ClassicIndexSchemaFactory"/>

After doing this I get an exception when starting the server:

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:    fieldType 'booleans' not found in the schema

Am I doing something terribly wrong here? Should not this kind of logic work?

UPDATE: Stractrace looks like this:

org.apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:885)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:652)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:518)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:283)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:277)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory$TypeMapping.populateValueClasses(AddSchemaFieldsUpdateProcessorFactory.java:244)
at org.apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory.inform(AddSchemaFieldsUpdateProcessorFactory.java:170)
at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:620)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:868)

Upvotes: 20

Views: 17318

Answers (3)

Hemant Thorat
Hemant Thorat

Reputation: 2456

Field type {booleans} is not defined in schema.xml.

Steps to fix it,

  • Remove collection
  • Rename the managed-schema file to schema.xml
  • Modify solrconfig.xml to replace the schemaFactory class.
  • a) Remove any ManagedIndexSchemaFactory definition if it exists.
  • b) Add a ClassicIndexSchemaFactory definition as shown below,

<schemaFactory class="ClassicIndexSchemaFactory"/>

  • Update autoCreateFields to false in solrconfig.xml or you will get

This IndexSchema is not mutable error.

${update.autoCreateFields:false}

  • Recreate collection.

Upvotes: 2

Aeolun
Aeolun

Reputation: 756

The problem that I had here was had nothing to do with actually using the booleans field type. The problem was that the newly upgraded solrconfig.xml file has a processor for unknown fields enabled by default, which needs the booleans field type, and probably some others.

These are all defined by default in the new example schema.xml, but quite possibly not in your old schema.xml.

The solution for me was to comment out the <updateRequestProcessorChain name="add-unknown-fields-to-the-schema"> section in solrconfig.xml.

Alternatively, you can probably just replace solrconfig.xml.

Upvotes: 12

Bruno dos Santos
Bruno dos Santos

Reputation: 1361

The problem is that you are referencing a field type booleans that is not defined in your schema.xml file. When you create a core a file managed-schema is created in server\solr\my_collection\conf\. Rename this file to schema.xml and restart solr with ClassicIndexSchemaFactory and it will work fine.

Upvotes: 25

Related Questions