You'll need to shard your index. This assumes that your index doesn't
have a huge percentage of deleted docs. This latter shouldn't be
happening since as you delete docs, the number of deleted docs should
drop as segments are merged.

I suspect you aren't searching on this index yet, because I'm pretty
sure performance will be poor. I've never heard of a Solr node
handling 2B+ docs _on a single node_. There are many sharded
collections that have many more docs, but not a single node.

Best,
Erick

On Tue, May 6, 2014 at 5:54 PM, [Tech Fun]山崎 <yamaz...@techfun.jp> wrote:
> Hello everybody,
>
> Solr 4.3.1(and 4.7.1), Num Docs + Deleted Docs >
> 2147483647(Integer.MAX_VALUE) over
> Caused by: java.lang.IllegalArgumentException: Too many documents,
> composite IndexReaders cannot exceed 2147483647
>
> It seems to be trouble similar to the unresolved e-mail.
> http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201307.mbox/browser
>
> If How can I fix this?
> This Solr Specification?
>
>
> log.
>
> ERROR org.apache.solr.core.CoreContainer  – Unable to create core: collection1
> org.apache.solr.common.SolrException: Error opening new searcher
>     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:821)
>     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:618)
>     at 
> org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:949)
>     at org.apache.solr.core.CoreContainer.create(CoreContainer.java:984)
>     at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:597)
>     at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:592)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>     at java.lang.Thread.run(Thread.java:662)
> Caused by: org.apache.solr.common.SolrException: Error opening new searcher
>     at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1438)
>     at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1550)
>     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:796)
>     ... 13 more
> Caused by: org.apache.solr.common.SolrException: Error opening Reader
>     at 
> org.apache.solr.search.SolrIndexSearcher.getReader(SolrIndexSearcher.java:172)
>     at 
> org.apache.solr.search.SolrIndexSearcher.<init>(SolrIndexSearcher.java:183)
>     at 
> org.apache.solr.search.SolrIndexSearcher.<init>(SolrIndexSearcher.java:179)
>     at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1414)
>     ... 15 more
> Caused by: java.lang.IllegalArgumentException: Too many documents,
> composite IndexReaders cannot exceed 2147483647
>     at 
> org.apache.lucene.index.BaseCompositeReader.<init>(BaseCompositeReader.java:77)
>     at 
> org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:368)
>     at 
> org.apache.lucene.index.StandardDirectoryReader.<init>(StandardDirectoryReader.java:42)
>     at 
> org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:71)
>     at 
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:783)
>     at 
> org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
>     at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:88)
>     at 
> org.apache.solr.core.StandardIndexReaderFactory.newReader(StandardIndexReaderFactory.java:34)
>     at 
> org.apache.solr.search.SolrIndexSearcher.getReader(SolrIndexSearcher.java:169)
>     ... 18 more
> ERROR org.apache.solr.core.CoreContainer  –
> null:org.apache.solr.common.SolrException: Unable to create core:
> collection1
>     at 
> org.apache.solr.core.CoreContainer.recordAndThrow(CoreContainer.java:1450)
>     at org.apache.solr.core.CoreContainer.create(CoreContainer.java:993)
>     at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:597)
>     at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:592)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>     at java.lang.Thread.run(Thread.java:662)
> Caused by: org.apache.solr.common.SolrException: Error opening new searcher
>     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:821)
>     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:618)
>     at 
> org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:949)
>     at org.apache.solr.core.CoreContainer.create(CoreContainer.java:984)
>     ... 10 more
> Caused by: org.apache.solr.common.SolrException: Error opening new searcher
>     at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1438)
>     at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1550)
>     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:796)
>     ... 13 more
> Caused by: org.apache.solr.common.SolrException: Error opening Reader
>     at 
> org.apache.solr.search.SolrIndexSearcher.getReader(SolrIndexSearcher.java:172)
>     at 
> org.apache.solr.search.SolrIndexSearcher.<init>(SolrIndexSearcher.java:183)
>     at 
> org.apache.solr.search.SolrIndexSearcher.<init>(SolrIndexSearcher.java:179)
>     at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1414)
>     ... 15 more
> Caused by: java.lang.IllegalArgumentException: Too many documents,
> composite IndexReaders cannot exceed 2147483647
>     at 
> org.apache.lucene.index.BaseCompositeReader.<init>(BaseCompositeReader.java:77)
>     at 
> org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:368)
>     at 
> org.apache.lucene.index.StandardDirectoryReader.<init>(StandardDirectoryReader.java:42)
>     at 
> org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:71)
>     at 
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:783)
>     at 
> org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
>     at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:88)
>     at 
> org.apache.solr.core.StandardIndexReaderFactory.newReader(StandardIndexReaderFactory.java:34)
>     at 
> org.apache.solr.search.SolrIndexSearcher.getReader(SolrIndexSearcher.java:169)
>     ... 18 more
>
>
> sample solrconfig.xml
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <config>
>   <luceneMatchVersion>LUCENE_43</luceneMatchVersion>
>
>   <lib dir="/opt/solr/dist" regex="solr-cell-\d.*\.jar" />
>   <lib dir="/opt/solr/contrib/extraction/lib" regex=".*\.jar" />
>
>   <lib dir="/opt/solr/dist" regex="solr-clustering-\d.*\.jar" />
>   <lib dir="/opt/solr/contrib/clustering/lib" regex=".*\.jar" />
>
>   <lib dir="/opt/solr/dist" regex="solr-langid-\d.*\.jar" />
>   <lib dir="/opt/solr/contrib/langid/lib" regex=".*\.jar" />
>
>   <lib dir="/opt/solr/dist" regex="solr-velocity-\d.*\.jar" />
>   <lib dir="/opt/solr/contrib/velocity/lib" regex=".*\.jar" />
>
>   <dataDir>${solr.data.dir:}</dataDir>
>
>   <directoryFactory name="DirectoryFactory"
>
> class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
>
>   <codecFactory class="solr.SchemaCodecFactory"/>
>
>   <indexConfig>
>     <ramBufferSizeMB>256</ramBufferSizeMB>
>     <lockType>${solr.lock.type:native}</lockType>
>   </indexConfig>
>
>   <jmx />
>
>   <updateHandler class="solr.DirectUpdateHandler2">
>     <updateLog>
>       <str name="dir">${solr.ulog.dir:}</str>
>     </updateLog>
>     <autoCommit>
>       <maxDocs>10000</maxDocs>
>       <maxTime>60000</maxTime>
>       <openSearcher>false</openSearcher>
>     </autoCommit>
>     <autoSoftCommit>
>       <maxDocs>10</maxDocs>
>       <maxTime>1000</maxTime>
>     </autoSoftCommit>
>   </updateHandler>
>
>   <query>
>     <maxBooleanClauses>1024</maxBooleanClauses>
>     <filterCache class="solr.FastLRUCache"
>                  size="16384"
>                  initialSize="4096"
>                  autowarmCount="1024"/>
>     <queryResultCache class="solr.FastLRUCache"
>                      size="16384"
>                      initialSize="4096"
>                      autowarmCount="1024"/>
>     <documentCache class="solr.FastLRUCache"
>                    size="16384"
>                    initialSize="4096"
>                    autowarmCount="1024"/>
>     <enableLazyFieldLoading>true</enableLazyFieldLoading>
>     <queryResultWindowSize>20</queryResultWindowSize>
>     <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
>     <useColdSearcher>false</useColdSearcher>
>     <maxWarmingSearchers>2</maxWarmingSearchers>
>   </query>
>
>   <requestDispatcher handleSelect="false" >
>     <requestParsers enableRemoteStreaming="true"
>                     multipartUploadLimitInKB="2048000"
>                     formdataUploadLimitInKB="2048"/>
>     <httpCaching never304="true" />
>   </requestDispatcher>
>
>   <requestHandler name="/select" class="solr.SearchHandler">
>     <lst name="defaults">
>        <str name="echoParams">explicit</str>
>        <int name="rows">10</int>
>        <str name="df">text</str>
>     </lst>
>   </requestHandler>
>
>   <requestHandler name="/update" class="solr.UpdateRequestHandler">
>   </requestHandler>
>
>   <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
>     <lst name="defaults">
>       <str name="stream.contentType">application/json</str>
>     </lst>
>   </requestHandler>
>
>   <requestHandler name="/admin/" class="solr.admin.AdminHandlers" />
>
>   <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
>     <lst name="invariants">
>       <str name="q">solrpingquery</str>
>     </lst>
>     <lst name="defaults">
>       <str name="echoParams">all</str>
>     </lst>
>   </requestHandler>
>
>   <queryResponseWriter name="json" class="solr.JSONResponseWriter">
>     <str name="content-type">text/plain; charset=UTF-8</str>
>   </queryResponseWriter>
> </config>
>
>
> sample scheme.xml
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <schema name="twitter" version="1.5">
>   <!-- types -->
>   <types>
>     <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
>     <fieldType name="long" class="solr.TrieLongField"
> precisionStep="0" positionIncrementGap="0"/>
>     <fieldType name="tlong" class="solr.TrieLongField"
> precisionStep="8" positionIncrementGap="0"/>
>     <fieldType name="tdate" class="solr.TrieDateField"
> precisionStep="6" positionIncrementGap="0"/>
>     <fieldType name="text_cjk" class="solr.TextField"
> positionIncrementGap="100">
>       <analyzer>
>         <charFilter class="solr.MappingCharFilterFactory"/>
>         <tokenizer class="solr.StandardTokenizerFactory"/>
>         <filter class="solr.CJKWidthFilterFactory"/>
>         <filter class="solr.LowerCaseFilterFactory"/>
>         <filter class="solr.CJKBigramFilterFactory" outputUnigrams="true"/>
>       </analyzer>
>     </fieldType>
>   </types>
>
>   <!-- fields -->
>   <fields>
>     <field name="key" type="string" indexed="true" stored="true"
> required="true" />
>     <field name="status_id" type="tlong" indexed="true" stored="true"
> required="true"/>
>     <field name="text" type="text_cjk" indexed="true" stored="true"
> required="true"/>
>     <field name="from_user_id_str" type="string" indexed="true"
> stored="true" required="true"/>
>     <field name="created_at" type="tdate" indexed="true" stored="true"
> required="true"/>
>     <field name="_version_" type="long" indexed="true" stored="true"
> multiValued="false"/>
>   </fields>
>   <uniqueKey>key</uniqueKey>
>   <defaultSearchField>text</defaultSearchField>
>   <solrQueryParser defaultOperator="AND"/>
> </schema>
>
>
>
> sample data add source code, python
>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
> import datetime
> # use https://github.com/toastdriven/pysolr
> from pysolr import(
>     Solr,
> )
>
>
> def main():
>     s_time = datetime.datetime.utcnow()
>     print 'start.: ({})'.format(str(s_time))
>
>     solr = Solr('http://localhost:8983/solr/collection1', timeout=60)
>
>     docs = []
>
>     max_range = 22 * (10 ** 8)  # Java Integer.MAX_VALUE over
>     for x in xrange(1, max_range):
>         docs.append(
>             {
>                 'key': '{}'.format(x),
>                 'status_id': x,
>                 'text': '{} 番目の記事'.format(x).decode('utf-8'),
>                 'from_user_id_str': '1',
>                 'created_at': '2014-05-01T20:06:53Z',
>             }
>         )
>
>         if x % (10 ** 4) == 0:
>             solr.add(docs)
>             solr.commit()
>             docs = []
>
>             e_time = datetime.datetime.utcnow()
>
>             print '{} end.: ({})'.format(x, str(e_time - s_time))
>
>     solr.add(docs)
>     solr.commit()
>     docs = []
>
>     e_time = datetime.datetime.utcnow()
>
>     print 'end.: ({})'.format(str(e_time - s_time))
>
> if __name__ == '__main__':
>     main()

Reply via email to