Re: Verify a certain Replica contains a document

2015-05-18 Thread Anshum Gupta
I just tested out what you've mentioned and see the same behavior. I think
it calls for a JIRA and a fix.
distrib=false shouldn't consult zk in my opinion, else it makes no sense to
have that param. I'm not sure but it might just be regression.

Can you create a JIRA? I'll take it up soon if no one else does.

On Fri, May 15, 2015 at 10:45 PM, Shai Erera ser...@gmail.com wrote:

 Yes. Here's what I do:

 Start two embedded Solr nodes (i.e. like using MiniSolrCloudCluster). They
 were started on ports 63175 and 63201.

 Create a collection with one shard and replica.
 /solr/admin/collections?action=clusterstatus shows it was created on
 127.0.0.1:63201_solr.

 Index a document: curl -i -X POST
 http://127.0.0.1:63175/solr/mycollection/update/json?commit=true -d
 '[{id:doc1}]'

 Verify 63175 contains no cores:
 http://127.0.0.1:63175/solr/admin/cores?action=status
 Verify 63201 contains one core:
 http://127.0.0.1:63201/solr/admin/cores?action=status -- returns an index
 w/ numDocs=maxDoc=1.

 All of these return the document though:

 http://127.0.0.1:63175/solr/mycollection/select?q=*
 http://127.0.0.1:63175/solr/mycollection/select?q=*distrib=false
 http://127.0.0.1:63175/solr/mycollection_shard1_replica1/select?q=*

 http://127.0.0.1:63175/solr/mycollection_shard1_replica1/select?q=*distrib=false

 This returns Can not find: /solr/core_node1/select on both nodes (which
 is expected since there's no such core on any of the nods):
 http://127.0.0.1:63175/solr/core_node1/select?q=*

 Shai

 On Sat, May 16, 2015 at 8:08 AM, Anshum Gupta ans...@anshumgupta.net
 wrote:

  Did you also try querying /core.name/select with distrib=false ?
 
  On Fri, May 15, 2015 at 9:22 PM, Shai Erera ser...@gmail.com wrote:
 
   Hi
  
   Is there a REST API in Solr that allows me to query a certain
  Replica/core?
   I am writing some custom replica-recovery code and I'd like to verify
  that
   it works well.
  
   I wanted to use the /collection/select API, passing
   shards=host.under.test:ip/solr/collection, but that also works even if
   'host.under.test' does not hold any local replicas. This makes sense
  from a
   distributed search perspective, but doesn't help me. Also, passing
   distrib=false, which I found by searching the web, didn't help and
 seems
  to
   be ignored, or at least there's still a fallback that makes
   'host.under.test' access the other nodes in the cluster to fulfill the
   request.
  
   Next I looked at /admin/cores?action=STATUS API. This looks better as
 it
   allows me to list the cores on 'host.under.test' and I can get
 index-wide
   statistics such as numDocs and maxDoc. This is better cause in my
 tests I
   know how many documents I should expect.
  
   But I was wondering if
  
   (1) Is Core admin API the proper way to achieve what I want, or is
 there
  a
   better way?
   (2) Is there core-specific API for select/get, like there is for
   /collection. I tried /core.name/select, but again, I received results
  even
   when querying the node w/ no local replicas.
  
   Shai
  
 
 
 
  --
  Anshum Gupta
 




-- 
Anshum Gupta


Verify a certain Replica contains a document

2015-05-15 Thread Shai Erera
Hi

Is there a REST API in Solr that allows me to query a certain Replica/core?
I am writing some custom replica-recovery code and I'd like to verify that
it works well.

I wanted to use the /collection/select API, passing
shards=host.under.test:ip/solr/collection, but that also works even if
'host.under.test' does not hold any local replicas. This makes sense from a
distributed search perspective, but doesn't help me. Also, passing
distrib=false, which I found by searching the web, didn't help and seems to
be ignored, or at least there's still a fallback that makes
'host.under.test' access the other nodes in the cluster to fulfill the
request.

Next I looked at /admin/cores?action=STATUS API. This looks better as it
allows me to list the cores on 'host.under.test' and I can get index-wide
statistics such as numDocs and maxDoc. This is better cause in my tests I
know how many documents I should expect.

But I was wondering if

(1) Is Core admin API the proper way to achieve what I want, or is there a
better way?
(2) Is there core-specific API for select/get, like there is for
/collection. I tried /core.name/select, but again, I received results even
when querying the node w/ no local replicas.

Shai


Re: Verify a certain Replica contains a document

2015-05-15 Thread Anshum Gupta
Did you also try querying /core.name/select with distrib=false ?

On Fri, May 15, 2015 at 9:22 PM, Shai Erera ser...@gmail.com wrote:

 Hi

 Is there a REST API in Solr that allows me to query a certain Replica/core?
 I am writing some custom replica-recovery code and I'd like to verify that
 it works well.

 I wanted to use the /collection/select API, passing
 shards=host.under.test:ip/solr/collection, but that also works even if
 'host.under.test' does not hold any local replicas. This makes sense from a
 distributed search perspective, but doesn't help me. Also, passing
 distrib=false, which I found by searching the web, didn't help and seems to
 be ignored, or at least there's still a fallback that makes
 'host.under.test' access the other nodes in the cluster to fulfill the
 request.

 Next I looked at /admin/cores?action=STATUS API. This looks better as it
 allows me to list the cores on 'host.under.test' and I can get index-wide
 statistics such as numDocs and maxDoc. This is better cause in my tests I
 know how many documents I should expect.

 But I was wondering if

 (1) Is Core admin API the proper way to achieve what I want, or is there a
 better way?
 (2) Is there core-specific API for select/get, like there is for
 /collection. I tried /core.name/select, but again, I received results even
 when querying the node w/ no local replicas.

 Shai




-- 
Anshum Gupta


Re: Verify a certain Replica contains a document

2015-05-15 Thread Shai Erera
Yes. Here's what I do:

Start two embedded Solr nodes (i.e. like using MiniSolrCloudCluster). They
were started on ports 63175 and 63201.

Create a collection with one shard and replica.
/solr/admin/collections?action=clusterstatus shows it was created on
127.0.0.1:63201_solr.

Index a document: curl -i -X POST
http://127.0.0.1:63175/solr/mycollection/update/json?commit=true -d
'[{id:doc1}]'

Verify 63175 contains no cores:
http://127.0.0.1:63175/solr/admin/cores?action=status
Verify 63201 contains one core:
http://127.0.0.1:63201/solr/admin/cores?action=status -- returns an index
w/ numDocs=maxDoc=1.

All of these return the document though:

http://127.0.0.1:63175/solr/mycollection/select?q=*
http://127.0.0.1:63175/solr/mycollection/select?q=*distrib=false
http://127.0.0.1:63175/solr/mycollection_shard1_replica1/select?q=*
http://127.0.0.1:63175/solr/mycollection_shard1_replica1/select?q=*distrib=false

This returns Can not find: /solr/core_node1/select on both nodes (which
is expected since there's no such core on any of the nods):
http://127.0.0.1:63175/solr/core_node1/select?q=*

Shai

On Sat, May 16, 2015 at 8:08 AM, Anshum Gupta ans...@anshumgupta.net
wrote:

 Did you also try querying /core.name/select with distrib=false ?

 On Fri, May 15, 2015 at 9:22 PM, Shai Erera ser...@gmail.com wrote:

  Hi
 
  Is there a REST API in Solr that allows me to query a certain
 Replica/core?
  I am writing some custom replica-recovery code and I'd like to verify
 that
  it works well.
 
  I wanted to use the /collection/select API, passing
  shards=host.under.test:ip/solr/collection, but that also works even if
  'host.under.test' does not hold any local replicas. This makes sense
 from a
  distributed search perspective, but doesn't help me. Also, passing
  distrib=false, which I found by searching the web, didn't help and seems
 to
  be ignored, or at least there's still a fallback that makes
  'host.under.test' access the other nodes in the cluster to fulfill the
  request.
 
  Next I looked at /admin/cores?action=STATUS API. This looks better as it
  allows me to list the cores on 'host.under.test' and I can get index-wide
  statistics such as numDocs and maxDoc. This is better cause in my tests I
  know how many documents I should expect.
 
  But I was wondering if
 
  (1) Is Core admin API the proper way to achieve what I want, or is there
 a
  better way?
  (2) Is there core-specific API for select/get, like there is for
  /collection. I tried /core.name/select, but again, I received results
 even
  when querying the node w/ no local replicas.
 
  Shai
 



 --
 Anshum Gupta