SOLR uniqueKey с solr.UUIDField

Попытка использовать solr.UUIDField для создания поля uniqueKey.

<fieldType name="uuid" class="solr.UUIDField" indexed="true" />


<field name="uid" type="uuid" indexed="true" stored="true" default="NEW" />

<uniqueKey>uid</uniqueKey>

Но почему-то не работает.

Сообщение об ошибке:

ОБНОВЛЕНИЕ:

После внесения изменений, предложенных Леохом в ответе ниже, я получил следующее сообщение об ошибке:

Я также забыл упомянуть, что при использовании dataimporthandler я получаю сообщения об ошибках.

Я попытался удалить следующее, но тогда ничего не индексируется:

{msg=SolrCore 'db' is not available due to init failure: Error initializing QueryElevationComponent.,trace=org.apache.solr.common.SolrException: SolrCore 'db' is not available due to init failure: Error initializing QueryElevationComponent.
at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:818)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:289)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:197)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:834)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:625)
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:557)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:592)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:271)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:263)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
... 1 more
Caused by: org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.
at org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:242)
at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:631)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:829)
... 13 more
Caused by: org.apache.solr.common.SolrException: Invalid UUID String: '1'
at org.apache.solr.schema.UUIDField.toInternal(UUIDField.java:89)
at org.apache.solr.schema.FieldType.readableToIndexed(FieldType.java:391)
at org.apache.solr.handler.component.QueryElevationComponent$ElevationObj.<init>(QueryElevationComponent.java:138)
at org.apache.solr.handler.component.QueryElevationComponent.loadElevationMap(QueryElevationComponent.java:311)
at org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:225)

Давид2342

<searchComponent name="elevator" class="org.apache.solr.handler.component.QueryElevationComponent" >
    <!-- pick a fieldType to analyze queries -->
    <str name="queryFieldType">string</str>
    <str name="config-file">elevate.xml</str>
</searchComponent>

person MikeAlike234    schedule 12.02.2014    source источник
comment
solr-4.6.0, что мне использовать в этой версии?   -  person leoh    schedule 12.02.2014
comment
{msg=SolrCore 'db' недоступен из-за сбоя инициализации: поле uniqueKey (пустое) не может быть настроено со значением по умолчанию (NEW). Файл схемы: .\example-DIH\solr\db\schema.xml,trace=org.apache.solr.common.SolrException: SolrCore 'db' недоступен из-за сбоя инициализации: поле uniqueKey (null) не может быть настроено со значением по умолчанию (NEW). Файл схемы: .\example-DIH\solr\db\schema.xml по адресу org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:818) по адресу org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter. java:289) в org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:197) в org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) в org.eclipse.jetty .servlet.ServletHandler.doHandle(ServletHandler.java:455) в org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) в org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java :557) в org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) в org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) в org.eclipse. jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) в org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandl er.java:193) в org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) в org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) в org. .eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) в org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) в org.eclipse.jetty.server.handler .HandlerWrapper.handle(HandlerWrapper.java:116) в org.eclipse.jetty.server.Server.handle(Server.java:368) в org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) в org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53) в org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942) в org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler. headerComplete(AbstractHttpConnection.java:1004) в org.eclip se.jetty.http.HttpParser.parseNext(HttpParser.java:640) на org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) на org.eclipse.jetty.server. BlockingHttpConnection.handle(BlockingHttpConnection.java:72) в org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264) в org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool. java:608) в org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) в java.lang.Thread.run(неизвестный источник) Вызвано: org.apache.solr.common.SolrException : поле uniqueKey (null) не может быть настроено со значением по умолчанию (NEW). Файл схемы: .\example-DIH\solr\db\schema.xml по адресу org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:608) по адресу org.apache.solr.schema.IndexSchema.(IndexSchema.java :166) в org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:55) в org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:69) в org.apache.solr.core. CoreContainer.createFromLocal(CoreContainer.java:554) в org.apache.solr.core.CoreContainer.create(CoreContainer.java:592) в org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:271) в org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:263) в java.util.concurrent.FutureTask$Sync.innerRun(неизвестный источник) в java.util.concurrent.FutureTask.run(неизвестный источник) в java.util.concurrent.Executors$RunnableAdapter.call(неизвестный источник) в java.util.concurrent.FutureTask$Sync.innerRun(неизвестный источник) в java.util.concurrent.FutureT ask.run(неизвестный источник) в java.util.concurrent.ThreadPoolExecutor$Worker.runTask(неизвестный источник) в java.util.concurrent.ThreadPoolExecutor$Worker.run(неизвестный источник) ... еще 1 Вызвано: org.apache .solr.common.SolrException: поле uniqueKey (null) не может быть настроено со значением по умолчанию (NEW) в org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:536)   -  person MikeAlike234    schedule 13.02.2014


Ответы (2)


Чтобы настроить поле uuid в solr 4.6, вам могут понадобиться следующие конфигурации

Вот ссылка на пример конфигурации, которая мне подходит: https://gist.github.com/leoh/8967328

<!--schema.xml-->

<fieldType name="uuid" class="solr.UUIDField" indexed="true" />

<field name="id" type="uuid" indexed="true" stored="true" required="true" />

<uniqueKey>id</uniqueKey>

<!--solrconfig.xml-->
<updateRequestProcessorChain name="uuid">
    <processor class="solr.UUIDUpdateProcessorFactory">
      <str name="fieldName">id</str>
    </processor>
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>


 <requestHandler name="/update" class="solr.UpdateRequestHandler">
       <lst name="defaults">
         <str name="update.chain">uuid</str>
       </lst>
</requestHandler>

Для вашей второй ошибки «сбой инициализации:» вам нужно изменить uid в файле elevate.xml. Путь по умолчанию для повышения уровня файла:

person leoh    schedule 13.02.2014

возможно, ваш путь к этому файлу может быть другим.

@ SOLR_HOME\example\example-DIH\solr\solr\conf 

Если вы хотите узнать, где именно находится файл elevate.xml, прикрепите файл elevate.xml.

это может работать только на solr 3. Какую версию solr вы используете?

person Anand Khatri    schedule 13.02.2014