# .Net Elasticsearch LowLevel Client migration path to ES 9.x

**URL:** <https://discuss.elastic.co/t/net-elasticsearch-lowlevel-client-migration-path-to-es-9-x/379840>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [July 6, 2025, 7:21pm UTC](https://discuss.elastic.co/t/net-elasticsearch-lowlevel-client-migration-path-to-es-9-x/379840 "2025-07-06T19:21:28Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![askids](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/askids/32/22252_2.png) [@askids](https://discuss.elastic.co/u/askids)\
**Post date:** [July 6, 2025, 7:21pm UTC](https://discuss.elastic.co/t/net-elasticsearch-lowlevel-client-migration-path-to-es-9-x/379840/1 "2025-07-06T19:21:28Z")

</div>

hi,  
Currently we are using low level client in .Net on 7.17.x to perform bulk operation, where we are preparing NDJSON format and call the Bulk method. What will be equivalent of this when we migrate to new .Net client fo ES v9.x? Do we need to start using Transport now for bulk api operation?

We dont have individual models for the index operations and either get json data from external source as request payload or build it on the fly depending on the SQL query columns from data reader.

`var result = Client.LowLevel.Bulk<BulkResponse>(IndexName, sbJsonData.ToString());`

Thanks!

---

<div class="post-metadata">

**Author:** ![flobernd](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/flobernd/32/124877_2.png) [@flobernd](https://discuss.elastic.co/u/flobernd)\
**Post date:** [July 8, 2025, 8:14pm UTC](https://discuss.elastic.co/t/net-elasticsearch-lowlevel-client-migration-path-to-es-9-x/379840/2 "2025-07-08T20:14:23Z")

</div>

Hi @askids ,

yes Transport is now the name of the low level client.

There is a rudimentary usage example in the docs.
