# How to increase efficiency of search queries in Elasticsearch

**URL:** <https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951>\
**Category:** Elasticsearch\
**Created:** [June 10, 2019, 8:57am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951 "2019-06-10T08:57:09Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 10, 2019, 8:57am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/1 "2019-06-10T08:57:10Z")

</div>

I have made a Elasticsearch setup on a server with configuration - 64 GB RAM and 16 cores. I have created three nodes on this server. One node is both master and data and other two are data nodes. They all are using heap size of 10 GB each.

I have created an index in Elasticsearch which is having documents around 200K . Now when I am using a search query to retrieve all the data from that particular index it is taking around 20-30 seconds which is very huge.  
Please suggest me what should I do to reduce this search time.

Thank you

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 10, 2019, 9:48am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/2 "2019-06-10T09:48:00Z")

</div>

Searching for matching documents is very different than extracting a full resultset.

Anyway what does your query look like. Which API are you using? Search? Scroll?

What is the use case?

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 10, 2019, 10:10am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/3 "2019-06-10T10:10:48Z")

</div>

Hi @dadoonet,

yes I'm extracting a full resultset. My query looks like this [http://xxx.xx.x.xxx:9200/index-name/doc-type/\_search?q=\*&size=200000](http://xxx.xx.x.xxx:9200/index-name/doc-type/_search?q=*&size=200000) . It is taking 20-30 seconds.

Actually this index contains my SQL data which i am using in my python code after every 10-15 seconds so i need to work fast

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [June 10, 2019, 10:22am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/4 "2019-06-10T10:22:28Z")

</div>

Why did you create 3 separate nodes on a host that size?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 10, 2019, 10:25am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/5 "2019-06-10T10:25:36Z")

</div>

Which version is that?  
Unless you changed index settings, this query won't work in 6.x/7.x and may be 5.x.

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 10, 2019, 10:30am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/6 "2019-06-10T10:30:28Z")

</div>

I have searched for how to improve performance of Elasticsearch so I end up creating 3 nodes as of now. Is there any other way please suggest.

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 10, 2019, 10:33am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/7 "2019-06-10T10:33:19Z")

</div>

I'm using the latest version 7.1.1.  
I have changed the settings for the index  
PUT index-name/\_settings  
{  
"max\_result\_window" : 200000  
}  
and it is working but it is taking too long. help me to reduce this time

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 10, 2019, 4:40pm UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/8 "2019-06-10T16:40:53Z")

</div>

You should use smaller size value like 1000 or 10000 and use the scroll API as documented.  
Sorting by uid will also help the scroll API to run faster.

But doing that with search API is a bad practice.

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 11, 2019, 9:32am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/9 "2019-06-11T09:32:09Z")

</div>

Thanks for the suggestion. I have used scroll API this time but it is still taking same time to fetch the data for me.  
concept of \_uid is not there in 7.1 version see this [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-uid-field.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-uid-field.html)  
so I have sorted it by \_id but there is no change in the time taken.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 11, 2019, 11:26am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/10 "2019-06-11T11:26:31Z")

</div>

If you also changed the number of shards to 1, then I guess that's the best you can have with your current hardware.

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 12, 2019, 6:40am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/11 "2019-06-12T06:40:36Z")

</div>

No of shards is already 1 on that particular index.  
Do I need to change any other configuration for my Elasticsearch ?  
What are the ideal configuration for setting up an Elasticsearch ? Maybe I have missed any.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 12, 2019, 6:54am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/12 "2019-06-12T06:54:04Z")

</div>

Do you have SSD drives? Do you have only one nodes?

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 12, 2019, 7:23am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/13 "2019-06-12T07:23:40Z")

</div>

I am Using HDD right now with 3 nodes on it. One both master and data and two data nodes

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 12, 2019, 9:21am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/14 "2019-06-12T09:21:55Z")

</div>

So use SSD and that will be faster.  
Then use only one node to make it even faster if really needed.

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 12, 2019, 11:07am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/15 "2019-06-12T11:07:03Z")

</div>

Thanks @dadoonet  
SSD makes it faster but nodes creation has no effect. It is still taking 9 seconds but I want the result under 1 sec. Suggest something more.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 12, 2019, 11:28am UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/16 "2019-06-12T11:28:49Z")

</div>

What is "Node creation"? How is this related?

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 12, 2019, 12:00pm UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/17 "2019-06-12T12:00:57Z")

</div>

I just meant about no of Elasticsearch nodes .  
No of nodes doesn't have any impact on search speed. Currently I am using one node and the speed is approx. same

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 12, 2019, 12:28pm UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/18 "2019-06-12T12:28:26Z")

</div>

How big is a document? What is its size?

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [June 12, 2019, 1:18pm UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/19 "2019-06-12T13:18:00Z")

</div>

When adding nodes is suggested in order to improve performance it is generally assumed these will run on different hardware thereby increasing the total amount of system resources available to the cluster. Having more than one node per host is generally only recommended when the host has more resources than s single node can efficiently utilise.

---

<div class="post-metadata">

**Author:** ![avinash9999](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avinash9999/32/91409_2.png) [@avinash9999](https://discuss.elastic.co/u/avinash9999)\
**Post date:** [June 12, 2019, 3:22pm UTC](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951/20 "2019-06-12T15:22:19Z")

</div>

My Index contains total 200k records of size 70mb

[Next page](https://discuss.elastic.co/t/how-to-increase-efficiency-of-search-queries-in-elasticsearch/184951.md?page=2)
