title: How to fix SolrException: QueryElevationComponent requires the schema to have a uniqueKeyField?
body: <p>I am setting up a solr built into tomcat. I can get the example running in tomcat no problem. I then try to change schema.xml to a very simple one and I get an error. </p>
  
  <p>This is my schema.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
  &lt;schema name="minimal" version="1.1"&gt;
  &lt;types&gt;
  &lt;fieldType name="string" class="solr.StrField"/&gt;
  &lt;/types&gt;
  &lt;fields&gt;
  &lt;dynamicField name="*" type="string" indexed="true" stored="true"/&gt;
  &lt;/fields&gt;
  &lt;/schema&gt;
  </code></pre>
  
  <p>This is the error I get on start up:</p>
  
  <pre><code>May 24, 2012 10:03:33 AM org.apache.solr.core.SolrCore close
  INFO: []  CLOSING SolrCore org.apache.solr.core.SolrCore@666b581a
  May 24, 2012 10:03:33 AM org.apache.solr.core.QuerySenderListener newSearcher
  INFO: QuerySenderListener sending requests to Searcher@2a664d5f main
  May 24, 2012 10:03:33 AM org.apache.solr.update.DirectUpdateHandler2 close
  INFO: closing DirectUpdateHandler2{commits=0,autocommits=0,optimizes=0,rollbacks=0,expungeDeletes=0,docsPending=0,adds=0,deletesById=0,deletesByQuery=0,errors=0,cumulative_adds=0,cumulative_deletesById=0,cumulative_deletesByQuery=0,cumulative_errors=0}
  May 24, 2012 10:03:33 AM org.apache.solr.update.DirectUpdateHandler2 close
  INFO: closed DirectUpdateHandler2{commits=0,autocommits=0,optimizes=0,rollbacks=0,expungeDeletes=0,docsPending=0,adds=0,deletesById=0,deletesByQuery=0,errors=0,cumulative_adds=0,cumulative_deletesById=0,cumulative_deletesByQuery=0,cumulative_errors=0}
  May 24, 2012 10:03:33 AM org.apache.solr.common.SolrException log
  SEVERE: java.lang.NullPointerException
      at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:164)
      at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
      at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
      at org.apache.solr.core.QuerySenderListener.newSearcher(QuerySenderListener.java:59)
      at org.apache.solr.core.SolrCore$3.call(SolrCore.java:1182)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  
  May 24, 2012 10:03:33 AM org.apache.solr.core.SolrCore execute
  INFO: [] webapp=null path=null params={event=firstSearcher&amp;q=static+firstSearcher+warming+in+solrconfig.xml} status=500 QTime=12 
  May 24, 2012 10:03:33 AM org.apache.solr.core.QuerySenderListener newSearcher
  INFO: QuerySenderListener done.
  May 24, 2012 10:03:33 AM org.apache.solr.handler.component.SpellCheckComponent$SpellCheckerListener newSearcher
  INFO: Loading spell index for spellchecker: default
  May 24, 2012 10:03:33 AM org.apache.solr.core.SolrCore registerSearcher
  INFO: [] Registered new searcher Searcher@2a664d5f main
  May 24, 2012 10:03:33 AM org.apache.solr.core.SolrCore closeSearcher
  INFO: [] Closing main searcher on request.
  May 24, 2012 10:03:33 AM org.apache.solr.search.SolrIndexSearcher close
  INFO: Closing Searcher@2a664d5f main
      fieldValueCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
      filterCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
      queryResultCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
      documentCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
  May 24, 2012 10:03:33 AM org.apache.solr.common.SolrException log
  SEVERE: org.apache.solr.common.SolrException
      at org.apache.solr.core.SolrCore.&lt;init&gt;(SolrCore.java:600)
      at org.apache.solr.core.CoreContainer.create(CoreContainer.java:483)
      at org.apache.solr.core.CoreContainer.load(CoreContainer.java:335)
      at org.apache.solr.core.CoreContainer.load(CoreContainer.java:219)
      at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161)
      at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
      at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
      at org.apache.catalina.core.ApplicationFilterConfig.&lt;init&gt;(ApplicationFilterConfig.java:103)
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
      at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
      at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  Caused by: org.apache.solr.common.SolrException: QueryElevationComponent requires the schema to have a uniqueKeyField.
      at org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:160)
      at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:527)
      at org.apache.solr.core.SolrCore.&lt;init&gt;(SolrCore.java:594)
      ... 23 more
  
  May 24, 2012 10:03:33 AM org.apache.solr.servlet.SolrDispatchFilter init
  SEVERE: Could not start Solr. Check solr/home property and the logs
  org.apache.solr.common.SolrException: No cores were created, please check the logs for errors
      at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:172)
      at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
      at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
      at org.apache.catalina.core.ApplicationFilterConfig.&lt;init&gt;(ApplicationFilterConfig.java:103)
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
      at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
      at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  
  May 24, 2012 10:03:33 AM org.apache.solr.common.SolrException log
  SEVERE: org.apache.solr.common.SolrException: No cores were created, please check the logs for errors
      at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:172)
      at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
      at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
      at org.apache.catalina.core.ApplicationFilterConfig.&lt;init&gt;(ApplicationFilterConfig.java:103)
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
      at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
      at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  </code></pre>
  
  <p>Your help is much appreciated. </p>