# How to use MultiSearchResponse of MultiSearchAsync in Client Elastic search for .NET v8.10

**URL:** <https://discuss.elastic.co/t/how-to-use-multisearchresponse-of-multisearchasync-in-client-elastic-search-for-net-v8-10/365990>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [September 4, 2024, 12:37am UTC](https://discuss.elastic.co/t/how-to-use-multisearchresponse-of-multisearchasync-in-client-elastic-search-for-net-v8-10/365990 "2024-09-04T00:37:41Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![demet](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@demet](https://discuss.elastic.co/u/demet)\
**Post date:** [September 4, 2024, 12:37am UTC](https://discuss.elastic.co/t/how-to-use-multisearchresponse-of-multisearchasync-in-client-elastic-search-for-net-v8-10/365990/1 "2024-09-04T00:37:41Z")

</div>

I am currently using the Elasticsearch client for .NET, The version I am using is 8.10  
the way I query the information with “MultiSearchAsync” is as follows:

```auto
    Query[] collectionQuerys = new Query[]
    {
        new MatchQuery(new Field("amount")) { Query = operationAmount },
        new MatchQuery(new Field("service.trackingId.keyword")) { Query = serviceTrackingId },
        new MatchQuery(new Field("dueDate")) { Query = dueDate },
    };

    BoolQuery boolQuery = new BoolQuery { Must = collectionQuerys };

    listSearchRequestItems.Add(
        new SearchRequestItem(
        new MultisearchHeader { Index = elasticIndex },
        new MultisearchBody { Query = boolQuery }));
}

MultiSearchRequestDescriptor<DirectDebitPaymentResponse> msrd = new MultiSearchRequestDescriptor<DirectDebitPaymentResponse>();

listSearchRequestItems.ForEach(item =>
{
    msrd.AddSearch(item);
});

Elastic.Clients.Elasticsearch.MultiSearchResponse<DirectDebitPaymentResponse> multiSearchResponse = await this.elasticsearchClient.MultiSearchAsync(msrd);

```

I have problems obtaining the responses since it appears to me that the members are not public.  
Can you help me with an example of how to do it, please?

 ![NotPublic](https://us1.discourse-cdn.com/elastic/original/3X/7/5/75524e92659bfbe281e7d367c1bdc378614293c9.png)

---

<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:** [September 4, 2024, 7:16am UTC](https://discuss.elastic.co/t/how-to-use-multisearchresponse-of-multisearchasync-in-client-elastic-search-for-net-v8-10/365990/2 "2024-09-04T07:16:52Z")

</div>

Hi @demet,

the `ResponseItem` is a union. You have to use the `.Match()` method to access the internal `Item1`/`Item2` fields:

```csharp
var resp = await client.MultiSearchAsync<Person>();

foreach (var responseItem in resp.Responses)
{
	// ResponseItem is a union of MultiSearchItem and ErrorResponseBase.
	responseItem.Match(x =>
	{
		// Match MultiSearchItem variant
		Console.WriteLine("Success response item:");
		Console.WriteLine(x.Documents.Count);
	}, x =>
	{
		// Match ErrorResponseBase variant
		Console.WriteLine("Error response item");
		Console.WriteLine(x.Error);
	});
}

```

The above example calls `.Match()` for each returned `ResponseItem`. `Match` will either invoke the first action (for success responses) **or** the second action (for error responses).

---

<div class="post-metadata">

**Author:** ![demet](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@demet](https://discuss.elastic.co/u/demet)\
**Post date:** [September 4, 2024, 4:21pm UTC](https://discuss.elastic.co/t/how-to-use-multisearchresponse-of-multisearchasync-in-client-elastic-search-for-net-v8-10/365990/3 "2024-09-04T16:21:58Z")

</div>

Hi @flobernd.

Thank you for your response; it has worked great for me.

Best regards,
