Как я могу зарегистрировать ElasticClient в качестве синглтона в приложении .NET Core, но все еще в состоянии указать другой индекс во время запроса?
Например:
В Startup.cs я регистрирую объект эластичного клиента как синглтон, упоминая только URL без указания индекса.
public void ConfigureServices(IServiceCollection services)
{
....
var connectionSettings = new ConnectionSettings(new Uri("http://localhost:9200"));
var client = new ElasticClient(connectionSettings);
services.AddSingleton<IElasticClient>(client);
....
}
Затем при внедрении одноэлементного объекта ElasticClient выше я бы хотел использовать его для разных индексов в 2 разных запросах.
В приведенном ниже классе я хочу сделать запрос из индекса под названием «Apple»
public class GetAppleHandler
{
private readonly IElasticClient _elasticClient;
public GetAppleHandler(IElasticClient elasticClient)
{
_elasticClient = elasticClient;
}
public async Task<GetAppleResponse> Handle()
{
// I want to query (_elasticClient.SearchAsync<>) using an index called "Apple" here
}
}
Из приведенного ниже кода я хочу сделать запрос из индекса под названием "Orange"
public class GetOrangeHandler
{
private readonly IElasticClient _elasticClient;
public GetOrangeHandler(IElasticClient elasticClient)
{
_elasticClient = elasticClient;
}
public async Task<GetOrangeResponse> Handle()
{
// I want to query (_elasticClient.SearchAsync<>) using an index called "Orange" here
}
}
Как я могу это сделать? Если это невозможно, можете ли вы предложить другой подход, который позволит мне внедрить ElasticClient с помощью внедрения зависимостей .NET Core и в то же время также позволит мне запрашивать 2 разных индекса одного и того же экземпляра ES?