# Internal API to query against a shard

**URL:** https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303
**Category:** Elasticsearch
**Created:** [May 22, 2019, 6:46pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303 "2019-05-22T18:46:07Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![cecoke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cecoke/32/55308_2.png) [@cecoke](https://discuss.elastic.co/u/cecoke)
#### Post date: [May 22, 2019, 6:46pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/1 "2019-05-22T18:46:07Z")

</div>

Hi Elastic,

I wonder if there is any internal API I can use to query against a local shard. My code might be a plugin with a query and the id of a local shard on the node. I want to execute the query on the specified shard internally to get results, preferably without http, routing if I don't have to.

---

<div class="post-metadata">

### Author: ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)
#### Post date: [May 22, 2019, 11:55pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/2 "2019-05-22T23:55:02Z")

</div>

What client are you using?

---

<div class="post-metadata">

### Author: ![cecoke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cecoke/32/55308_2.png) [@cecoke](https://discuss.elastic.co/u/cecoke)
#### Post date: [May 23, 2019, 12:52am UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/3 "2019-05-23T00:52:35Z")

</div>

I am writing a plugin so I can use any client that is available to me. The most obvious one would be `org.elasticsearch.client.Client` from `createComponents` .

---

<div class="post-metadata">

### Author: ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)
#### Post date: [May 23, 2019, 12:52am UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/4 "2019-05-23T00:52:54Z")

</div>

What language?

---

<div class="post-metadata">

### Author: ![cecoke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cecoke/32/55308_2.png) [@cecoke](https://discuss.elastic.co/u/cecoke)
#### Post date: [May 23, 2019, 9:10pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/5 "2019-05-23T21:10:23Z")

</div>

I am writing this plugin in Java.

---

<div class="post-metadata">

### Author: ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)
#### Post date: [May 23, 2019, 9:31pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/6 "2019-05-23T21:31:51Z")

</div>

I don't know the details of the clients themselves, but given you're interacting over HTTP for most of them these days you will need to either figure out which node holds the shard you want to query, or just let Elasticsearch figure it out for you and deal with any redirects.

I am not sure why routing is problematic though?

---

<div class="post-metadata">

### Author: ![cecoke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cecoke/32/55308_2.png) [@cecoke](https://discuss.elastic.co/u/cecoke)
#### Post date: [May 24, 2019, 7:08pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/7 "2019-05-24T19:08:10Z")

</div>

Since I am only interested in the local shards on the node, I have the shard ids and the local node id. Given I only want to run the query on the local shards so extra routing seems unnecessary. That is why I want to know if there is an internal shortcut.

---

<div class="post-metadata">

### Author: ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)
#### Post date: [May 24, 2019, 7:09pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/8 "2019-05-24T19:09:17Z")

</div>

Just use the `_only_local` preference parameter - [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-preference.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-preference.html)

I dunno if there's something in the java client for that though sorry.

---

<div class="post-metadata">

### Author: ![cecoke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cecoke/32/55308_2.png) [@cecoke](https://discuss.elastic.co/u/cecoke)
#### Post date: [May 24, 2019, 7:48pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/9 "2019-05-24T19:48:08Z")

</div>

That would help! Thank you so much!

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [June 21, 2019, 7:48pm UTC](https://discuss.elastic.co/t/internal-api-to-query-against-a-shard/182303/10 "2019-06-21T19:48:28Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
