# Elasticsearch | Very slow search

**URL:** <https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368>\
**Category:** Elasticsearch\
**Created:** [February 28, 2019, 3:11pm UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368 "2019-02-28T15:11:13Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [February 28, 2019, 3:11pm UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/1 "2019-02-28T15:11:13Z")

</div>

Hi,

I am benchmarking search speed using different parameters.  
One specific parameter used is copy\_to implementation.

Scenario 1.

1. Number of Fields : 10000
2. Documents indexed : 500
3. Indices : 10
4. Search on Indices : 10 at once  
Search Speed using copy\_to field: 20ms -3s

Scenario 2.

1. Number of Fields : 10000
2. Documents indexed : 100000
3. Indices : 10
4. Search on Indices : 10 at once  
Search Speed using copy\_to field: 6s - 18s

I suppose the number of documents stored in Elasticsearch will not affect the search speed.  
Also, since the use of copy\_to field, it will reduce the number of disk seeks during search to one field. Hence even this should not be something to worry about  
Why is there a drastic increase in search speed when number of documents increased?  
Am I missing something here? Because this is driving me crazy!

---

<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:** [February 28, 2019, 3:16pm UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/2 "2019-02-28T15:16:15Z")

</div>

What kind of searches are you running?

---

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [February 28, 2019, 3:17pm UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/3 "2019-02-28T15:17:18Z")

</div>

Multiple should clauses

1. Phrase match
2. Phrase with slop
3. Word based Fuzziness
4. Word based match

---

<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:** [February 28, 2019, 3:44pm UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/4 "2019-02-28T15:44:52Z")

</div>

Are you running these against the copy\_to field you mentioned? Can you show some examples?

---

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [February 28, 2019, 3:52pm UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/5 "2019-02-28T15:52:16Z")

</div>

yes, I am running these against copy\_to.  
The query contains

1. "query\_string\_query" for exact phrase match,
2. "multi\_match" for phrase with slop
3. "multi\_match" for word with fuzziness
4. "multi\_match" for word based match

---

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [March 4, 2019, 5:56am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/6 "2019-03-04T05:56:22Z")

</div>

@Christian_Dahlqvist any suggestions?

---

<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:** [March 4, 2019, 6:45am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/7 "2019-03-04T06:45:46Z")

</div>

Can you show some full example queries and how long they take to run? Why do you have so many fields in your index?

---

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [March 4, 2019, 7:38am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/8 "2019-03-04T07:38:36Z")

</div>

Thanks Christian for quick response.  
Like I mentioned earlier, this is a benchmarking process.  
My query is something of this sort

```
{
	"query": {
  
          "bool": {
            "should": [
             1. Query String query of exact match
             2. Multi_match of type phrase with slop of 1
             3. Multi_match with fuzziness 
             4. Multi_match without fuzziness 
            ],
            "minimum_should_match": 1
          }
        }
     
  }
```

---

<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:** [March 4, 2019, 8:45am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/9 "2019-03-04T08:45:48Z")

</div>

That does not look like a valid query. Can you please show a full example?

---

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [March 4, 2019, 11:16am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/10 "2019-03-04T11:16:10Z")

</div>

These four are the clauses of bool should query.

---

<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:** [March 4, 2019, 11:18am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/11 "2019-03-04T11:18:12Z")

</div>

I give up. As you are not answering my questions I will leave this for someone else.

---

<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:** [March 4, 2019, 11:38am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/12 "2019-03-04T11:38:24Z")

</div>

As @Christian_Dahlqvist asked, you need to give **a real and complete example**. Not pseudo-code. Otherwise, there is no way to help you I'm afraid.

---

<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:** [March 5, 2019, 8:27am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/13 "2019-03-05T08:27:28Z")

</div>

If you are using query string queries without specifying a field name, be aware that the old `_all` field has been replaced by an [all\_fields](https://www.elastic.co/guide/en/elasticsearch/reference/6.6/query-dsl-query-string-query.html) mode, which can be slow if you have a lot of fields it need to iterate over. Combine this with slop and fuzziness and you could have a very expensive (and slow) query. You may also want to look into creating a custom copy\_all field to use by default, much like the old \_all field worked.

---

<div class="post-metadata">

**Author:** ![Nikesh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nikesh/32/86579_2.png) [@Nikesh](https://discuss.elastic.co/u/Nikesh)\
**Post date:** [March 5, 2019, 9:18am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/14 "2019-03-05T09:18:42Z")

</div>

Thanks for your suggestion. I am using [copy\_to](https://www.elastic.co/guide/en/elasticsearch/reference/current/copy-to.html) field.

---

<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:** [March 5, 2019, 9:20am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/15 "2019-03-05T09:20:38Z")

</div>

Then please provide detailed information, mappings and actual queries. Without that it is impossible to help.

---

<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:** [April 2, 2019, 9:26am UTC](https://discuss.elastic.co/t/elasticsearch-very-slow-search/170368/16 "2019-04-02T09:26:22Z")

</div>

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