# How dfs\_query\_then\_fetch works?

**URL:** <https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995>\
**Category:** Elasticsearch\
**Created:** [January 11, 2018, 3:31am UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995 "2018-01-11T03:31:45Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ankur\_singla](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ankur_singla/32/45612_2.png) [@ankur\_singla](https://discuss.elastic.co/u/ankur_singla)\
**Post date:** [January 11, 2018, 3:31am UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/1 "2018-01-11T03:31:46Z")

</div>

Hi guys

As per my understanding **dfs\_query\_then\_fetch** is used to get accurate results over multiple shards.

**Term aggregation** returns the approximate count per term(still confused with how it calculates documents errors) .

If i use dfs\_query\_then\_fetch search with term aggregation will it return the accurate results? I tried but it is not. I am still getting doc\_count\_error\_upper\_bound value greater than zero.

**QUERY** :

```
GET demo/_search?pretty=true&search_type=dfs_query_then_fetch
{
    "aggs" : {
        "products" : {
            "terms" : {
                "field" : "demo1.keyword",
                "size" : 5
            }
        }
    }
}

```

**Result** :

```
"aggregations": {
    "products": {
      "doc_count_error_upper_bound": 10959,
      "sum_other_doc_count": 10454016,
      "buckets": [
        {
          "key": "SK148",
          "doc_count": 4442
        },
        {
          "key": "SK67",
          "doc_count": 4432
        },
        {
          "key": "SK489",
          "doc_count": 4420
        },
        {
          "key": "SK592",
          "doc_count": 2245
        },
        {
          "key": "SK88",
          "doc_count": 2245
        }
      ]
    }
  }

```

I think i misconception here.

Please guide me on this. It will be great help.

---

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [January 11, 2018, 4:13am UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/2 "2018-01-11T04:13:10Z")

</div>

I believe _dfs\_query\_then\_fetch_ calculates terms' IDFs globally without  
per-shard skew.

---

<div class="post-metadata">

**Author:** ![ankur\_singla](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ankur_singla/32/45612_2.png) [@ankur\_singla](https://discuss.elastic.co/u/ankur_singla)\
**Post date:** [January 11, 2018, 8:16am UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/3 "2018-01-11T08:16:14Z")

</div>

Yeah. I am assuming this means it will calculate count on whole data rather than on shard level & i should get accurate count without any **doc\_count\_error\_upper\_bound** or zero.

Am i right?

---

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [January 11, 2018, 1:37pm UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/4 "2018-01-11T13:37:41Z")

</div>

No. I believe dfs\_query\_then\_fetch impacts only scoring (search), but not  
aggregations.

---

<div class="post-metadata">

**Author:** ![Madhusudan\_Atmakuri](https://avatars.discourse-cdn.com/v4/letter/m/b4bc9f/32.png) [@Madhusudan\_Atmakuri](https://discuss.elastic.co/u/Madhusudan_Atmakuri)\
**Post date:** [January 11, 2018, 5:19pm UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/5 "2018-01-11T17:19:35Z")

</div>

I am not sure I understand. Based on this:

> <https://github.com/elastic/elasticsearch/issues/20580>

dfs\_query\_then\_fetch should return result skipping the first phase of query\_then\_fetch. The documentation does not say that it does not impact aggregations.

---

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [January 12, 2018, 3:36am UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/6 "2018-01-12T03:36:50Z")

</div>

This issue is about incorrect explanation. Which is the a separate thing.

> Madhusudan\_Atmakuri [https://discuss.elastic.co/u/madhusudan\_atmakuri](https://discuss.elastic.co/u/madhusudan_atmakuri)  
> January 11
> 
> I am not sure I understand. Based on this:  
> [GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine](http://github.com/elastic/elasticsearch)  
> [https://github.com/elastic/elasticsearch/issues/20580](https://github.com/elastic/elasticsearch/issues/20580)  
> [https://github.com/XGiton](https://github.com/XGiton) Issue: dfs\_query\_then\_fetch does work  
> sometimes [https://github.com/elastic/elasticsearch/issues/20580](https://github.com/elastic/elasticsearch/issues/20580)  
> opened by XGiton [https://github.com/XGiton](https://github.com/XGiton) on 2016-09-20  
> [https://github.com/elastic/elasticsearch/issues/20580](https://github.com/elastic/elasticsearch/issues/20580)  
> closed by jimczi [https://github.com/jimczi](https://github.com/jimczi) on 2016-09-20  
> [https://github.com/elastic/elasticsearch/issues/20580](https://github.com/elastic/elasticsearch/issues/20580)
> 
> Elasticsearch version: Elasticsearch 5.0.0-alpha5  
> Plugins installed: [analyzer-ik]  
> JVM version: jdk1.8.0\_101  
> OS version: Ubuntu 14.04  
> Description of the problem including expected versus actual behavior:  
> dfs\_query\_then\_fetch does not...
> 
> dfs\_query\_then\_fetch should return result skipping the first phase of  
> query\_then\_fetch. The documentation does not say that it does not impact  
> aggregations.

The documentation doesn't say it does.

---

<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:** [February 9, 2018, 3:37am UTC](https://discuss.elastic.co/t/how-dfs-query-then-fetch-works/114995/7 "2018-02-09T03:37:05Z")

</div>

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