I'm going to let someone who knows the splitting details take over <G>...
Best Erick On Mon, Jul 15, 2013 at 5:19 AM, Evgeny Salnikov <evg...@salnikoff.com> wrote: > Thank you! > I really need to eventually increase the number of shards, so I can not > directly use numshards = X and the only way out - splitshards, but then I > encountered the following problem: > > 1. run empty node1 > java -Dbootstrap_confdir=./solr/collection1/conf > -Dcollection.configName=myconf -DzkRun -jar start.jar -DnumShards=1 > 2. run empty node2 > java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar > 3. cluster is - collection1 -> shard1 -> master (node1) and replica (node2) > 4. add some data (10 docs) > 5. http://node1:8983/solr/collection1/select?q=*:* > <response> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">5</int> > <lst name="params"> > <str name="q">*:*</str> > </lst> > </lst> > <result name="response" numFound="10" start="0"> > <doc>...</doc> > <doc>...</doc> > </result> > </response> > 6. try group.query > http://node1:8983/solr/collection1/select?q=*:*&group=true&group.query=street:%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0 > <response> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">13</int> > <lst name="params"> > <str name="q">*:*</str> > <str name="group.query">street:Королева</str> > <str name="group">true</str> > </lst> > </lst> > <lst name="grouped"> > <lst name="street:Королева"> > <int name="matches">10</int> > <result name="doclist" numFound="10" start="0"> > <doc> > <str name="id">cdb1c990-d00c-4d2c-95ba-4f496e559be3</str> > <str name="street">Королева</str> > <str name="house">7</str> > <int name="number">62</int> > <str name="owner">Сидоров</str> > <str name="note">Дела отлично!</str> > <long name="_version_">1440614179417358336</long> > </doc> > </result> > </lst> > </lst> > </response> > 7. try split shard1 > http://node1:8983/solr/admin/collections?action=SPLITSHARD&collection=collection1&shard=shard1 > <response> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">9288</int> > </lst> > <lst name="success"> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">2441</int> > </lst> > <str name="core">collection1_shard1_1_replica1</str> > <str > name="saved">/home/evgenysalnikov/solrtest/node1/example/solr/solr.xml</str> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">2479</int> > </lst> > <str name="core">collection1_shard1_0_replica1</str> > <str > name="saved">/home/evgenysalnikov/solrtest/node1/example/solr/solr.xml</str> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">5002</int> > </lst> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">5002</int> > </lst> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">141</int> > </lst> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">0</int> > </lst> > <str name="core">collection1_shard1_0_replica1</str> > <str name="status">EMPTY_BUFFER</str> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">1</int> > </lst> > <str name="core">collection1_shard1_1_replica1</str> > <str name="status">EMPTY_BUFFER</str> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">2515</int> > </lst> > <str name="core">collection1_shard1_1_replica2</str> > <str > name="saved">/home/evgenysalnikov/solrtest/node2/example/solr/solr.xml</str> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">2554</int> > </lst> > <str name="core">collection1_shard1_0_replica2</str> > <str > name="saved">/home/evgenysalnikov/solrtest/node2/example/solr/solr.xml</str> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">4001</int> > </lst> > </lst> > <lst> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">4002</int> > </lst> > </lst> > </lst> > </response> > 8. Claster state change to > shard1 - master (inactive), > shard1 - slave (inactive) > shard1_0 - master, > shard1_0 - slave, > shard1_1 - master, > shard1_1 - slave > 9. Commit http://node1:8983/solr/collection1/update?commit=true > 10. Reload http://node1:8983/solr/collection1/select?q=*:* gives me > different results numFound 5,0,10 (i add 10 docs) > Node2 core info is > collection1 - shard1 - 10 docs > collection1_shard1_0_replica2 - 0 docs > collection1_shard1_1_replica2 - 0 docs > 11. I restart node2 > Node2 core info is > collection1 - shard1 - 10 docs > collection1_shard1_0_replica2 - 5 docs > collection1_shard1_1_replica2 - 5 docs > 12. http://node1:8983/solr/collection1/select?q=*:* always gives the > correct result - 10 documents > > But > http://node1:8983/solr/collection1/select?q=*:*&group=true&group.query=street:%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0 > returns the familiar error > shard 0 did not set sort field values (FieldDoc.fields is null); you must > pass fillFields=true to IndexSearcher.search on each shard > > I somehow did not operate correctly splitshard? > > > Also, I tried once to indicate the number of shard 2 > 1. run empty node1 > java -Dbootstrap_confdir=./solr/collection1/conf > -Dcollection.configName=myconf -DzkRun -jar start.jar -DnumShards=2 > 2. run empty node2 > java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar > 3. cluster is - collection1 -> shard1 -> master (node1) and collection1 -> > shard2 -> master (node2) > 4. add some data (10 docs) > 5. http://node1:8983/solr/collection1/select?q=*:* > <response> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">5</int> > <lst name="params"> > <str name="q">*:*</str> > </lst> > </lst> > <result name="response" numFound="10" start="0"> > <doc>...</doc> > <doc>...</doc> > </result> > </response> > 6. try group.query > http://node1:8983/solr/collection1/select?q=*:*&group=true&group.query=street:%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0 > > error > shard 0 did not set sort field values (FieldDoc.fields is null); you must > pass fillFields=true to IndexSearcher.search on each shard > > > Thanks in advance, > Evgeny > > > 2013/7/13 Erick Erickson <erickerick...@gmail.com> > >> Wait, you can't do this. You're changing the number >> of shards? Your original startup specified a single shard, >> bringing up another node and calling it "shard2" isn't >> consistent. >> >> If you'd brought up a single shard while telling SolrCloud that >> there were 2 shards, you shouldn't have been able to index >> anything. >> >> So what are you trying to do? Create your cluster with the >> number of shards you intend it to have. Or split shards. Or >> something, but just bringing up a second node and calling >> it "shard2" isn't supported. >> >> Best >> Erick >> >> On Fri, Jul 12, 2013 at 7:43 AM, Evgeny Salnikov <evg...@salnikoff.com> >> wrote: >> > Hi! >> > >> > To repeat the problem, do the following >> > >> > 1. Start a node1 of SolrCloud (4.3.1 default configs) (java >> > -Dbootstrap_confdir=./solr/collection1/conf >> -Dcollection.configName=myconf >> > -DzkRun -jar start.jar) >> > 2. Import to collection1 -> shard1 some data >> > 3. Try group.query e.g. >> > >> http://node1:8983/solr/collection1/select?q=*:*&group=true&group.query=someFiled:someValue >> . >> > it is important to have hit on index data. >> > 4. The result is, there is no error >> > 5. Start a node2 of SolrCloud (java -Djetty.port=7574 >> > -DzkHost=localhost:9983 -jar start.jar) >> > 6. On node2 add new core for collection1 -> shard2. Default core >> > "collection1" unload. We have one collection over two shard. Shard1 - >> have >> > data, shard2 - no data. >> > 7. Again try group.query >> > >> http://node1:8983/solr/collection1/select?q=*:*&group=true&group.query=someFiled:someValue >> > . >> > 8. Error: shard 0 did not set sort field values (FieldDoc.fields is >> null); >> > you must pass fillFields=true to IndexSearcher.search on each shard >> > >> > How i can set "fillFields=true to IndexSearcher.search" ? >> > >> > Thanks in advance, >> > Evgeny >> > > > > -- >>8[]