2014-04-22 3 views
1

해결할 수없는 문제가 있습니다. 부분적으로는 적절한 용어로 설명 할 수 없기 때문입니다. 나는이 서투른 질문에 대해 미안하다.org.apache.solr.common.SolrException : 문서가 누락되었습니다. uniqueKey 필드 : MongoDB의 Solr ID

아래에서 내 목표에 대한 개요를 볼 수 있습니다.

MongoDB & Solr 4.6.0을 사용하고 있습니다.

내가 MongoDB를-SOLR 연결이 몽고 커넥터 가능합니다 일부 기사에서 발견 ...이 들어

내 시스템에서 나는 몽고 커넥터를 설치 성공적으로

나는 그것이주는 다음 명령을 실행할 때 다음과 같은 오류가

터미널에서
mongo-connector -m localhost:27017 -t http://localhost:8080/solr -d Desktop/mongo-connector/mongo_connector/doc_managers/solr_doc_manager.py 

의주는 다음과 같은 로그

2014-04-22 12:19:35,572 - INFO - Beginning Mongo Connector 
2014-04-22 12:19:35,619 - INFO - Starting new HTTP connection (1): localhost 
2014-04-22 12:19:35,660 - INFO - Finished 'http://localhost:8080/solr/admin/luke?show=schema&wt=json' (get) with body '' in 0.049 seconds. 
2014-04-22 12:19:35,670 - INFO - MongoConnector: Empty oplog progress file. 
2014-04-22 12:19:35,674 - INFO - OplogThread: Initializing oplog thread 
2014-04-22 12:19:35,676 - INFO - MongoConnector: Starting connection thread MongoClient('localhost', 27017) 
2014-04-22 12:19:35,682 - INFO - OplogThread: dumping collection mydb.testData 
2014-04-22 12:19:35,684 - INFO - OplogThread: dumping collection test.testData 
2014-04-22 12:19:35,724 - INFO - OplogThread: dumping collection Naresh.products 
2014-04-22 12:19:35,726 - INFO - OplogThread: dumping collection mine.products 
2014-04-22 12:19:35,727 - INFO - OplogThread: dumping collection mine.mine 
2014-04-22 12:19:35,788 - INFO - Finished 'http://localhost:8080/solr/update/?commit=false' (post) with body 'u'<add><do' in 0.054 seconds. 
2014-04-22 12:19:35,790 - ERROR - [Reason: None] 
<response><lst name="responseHeader"><int name="status">400</int><int name="QTime">38</int></lst><lst name="error"><str name="msg">Document is missing mandatory uniqueKey field: id</str><int name="code">400</int></lst></response> 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/mongo_connector-1.2_-py2.7.egg/mongo_connector/oplog_manager.py", line 439, in dump_collection 
    dm.bulk_upsert(docs_to_dump()) 
    File "Desktop/mongo-connector/mongo_connector/doc_managers/solr_doc_manager.py", line 185, in bulk_upsert 
    "Could not bulk-insert documents into Solr") 
OperationFailed: Could not bulk-insert documents into Solr 
2014-04-22 12:19:35,792 - ERROR - OplogThread: Failed during dump collection cannot recover! Collection(Database(MongoClient('localhost', 27017), u'local'), u'oplog.rs') 
2014-04-22 12:19:36,678 - ERROR - MongoConnector: OplogThread <OplogThread(Thread-2, started 140192603404032)> unexpectedly stopped! Shutting down 
2014-04-22 12:19:36,678 - INFO - MongoConnector: Stopping all OplogThreads 

그리고 SOLR의 서버는 다음과 같은 오류 나는이 때문에 고유 필드 ID이다 그러나 이미 나는 고유 해당 필드를 정의 알고

org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id 
    at org.apache.solr.update.AddUpdateCommand.getIndexedId(AddUpdateCommand.java:92) 
    at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:582) 
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:435) 
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100) 
    at org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:247) 
    at org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:174) 
    at org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92) 
    at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74) 
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) 
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1859) 
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:710) 
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:413) 
    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.content(AbstractHttpConnection.java:953) 
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1014) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
    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(Thread.java:744) 

을주는 기록합니다. 여기

아직도 또한 같은 오류 이유를 제공

<field name="id" type="string" indexed="true" stored="true" /> 
<uniqueKey>id</uniqueKey> 

의 schema.xml입니까?

아이디어가 있으십니까?

+0

실제로 추가 한 문서에 ID 필드를 입력하셨습니까? 또한 '2014-04-22 12 : 19 : 35,788의 내용은 무엇입니까 - 정보 - 'u : body'가 'http : // localhost : 8080/solr/update /? commit = false'(post)로 끝납니다 ymonad

+0

@ymonad 빠른 답장을 보내 주셔서 감사합니다 ... 좀 더 설명해 주시겠습니까? – Naresh

+0

죄송합니다. 추가하려는 문서에 ID 필드가 없으므로이 메시지가 표시됩니다. 예 : ' ...', Schema.xml에는 없지만 mongo 커넥터가 게시 한 메시지에 있습니다. – ymonad

답변

1

아마도 알겠습니다. MongoDB는 _id을 고유 ID로 사용합니다. 따라서 당신은

<field name="_id" type="string" indexed="true" stored="true" /> 
<uniqueKey>_id</uniqueKey> 

<field name="id" type="string" indexed="true" stored="true" /> 
<uniqueKey>id</uniqueKey> 

을 변경하거나 몽고 커넥터를하는 --unique-key=id 옵션을 제공해야합니다.

https://github.com/10gen-labs/mongo-connector/wiki/Usage-with-Solr

+0

실제로 나는 둘 다 시도했다. fields ... i added _id id Naresh

+0

예'스키마가 있습니다.xml' 파일에 이미이 필드가 정의되어 있습니다. 시작하려면 해당 파일을 수정할 수 있습니다. https://github.com/10gen-labs/mongo-connector/blob/master/mongo_connector/doc_managers/schema.xml – llovett

관련 문제