# Update by query with index alias

**URL:** <https://discuss.elastic.co/t/update-by-query-with-index-alias/298610>\
**Category:** Elasticsearch\
**Created:** [March 2, 2022, 11:21am UTC](https://discuss.elastic.co/t/update-by-query-with-index-alias/298610 "2022-03-02T11:21:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Metheny](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/metheny/32/102517_2.png) [@Metheny](https://discuss.elastic.co/u/Metheny)\
**Post date:** [March 2, 2022, 11:21am UTC](https://discuss.elastic.co/t/update-by-query-with-index-alias/298610/1 "2022-03-02T11:21:36Z")

</div>

In the [Alias documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.0/aliases.html) it says that write operations aren't allowed on index alias and that it would return an error:

> If an alias points to multiple indices or data streams and is\_write\_index isn’t set, the alias rejects write requests.

However in the [update by query documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html#docs-update-by-query-api-path-params) it says:

> (Optional, string) Comma-separated list of data streams, indices, and aliases to search. Supports wildcards (\*). To search all data streams or indices, omit this parameter or use \* or \_all.

Failure may be true for example for updating a single doc by id, but an `_update_by_query` succeeds when run on an index alias.

So am I missing anything or is the Alias documentation not accurate?

---

<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 2, 2022, 1:58pm UTC](https://discuss.elastic.co/t/update-by-query-with-index-alias/298610/2 "2022-03-02T13:58:17Z")

</div>

It is correct as update by query first runs a query to identify which documents are to be updated (and indices these are located in) before updating these directly using the appropriate index, not the alias.

---

<div class="post-metadata">

**Author:** ![Metheny](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/metheny/32/102517_2.png) [@Metheny](https://discuss.elastic.co/u/Metheny)\
**Post date:** [March 2, 2022, 2:03pm UTC](https://discuss.elastic.co/t/update-by-query-with-index-alias/298610/3 "2022-03-02T14:03:00Z")

</div>

I see, but it's a bit misleading, since as far as the end user, both of these are considered write operations using an alias:  
`POST alias/_update/5`  
`POST alias/_update_by_query`

The way that Elasticsearch handles it behind the scene may be different as you say, but the Alias docs saying that using the alias for write operations will fail as a whole is misleading, and I think that part needs to be revised.

---

<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:** [March 2, 2022, 11:09pm UTC](https://discuss.elastic.co/t/update-by-query-with-index-alias/298610/4 "2022-03-02T23:09:09Z")

</div>

You'd be best off raising an issue on GitHub to have it addressed 🙂

> **[Issues · elastic/elasticsearch](https://github.com/elastic/elasticsearch/issues/)**
>
> Free and Open, Distributed, RESTful Search Engine. Contribute to elastic/elasticsearch development by creating an account on GitHub.

---

<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:** [March 30, 2022, 11:09pm UTC](https://discuss.elastic.co/t/update-by-query-with-index-alias/298610/5 "2022-03-30T23:09:46Z")

</div>

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