in Elastic.SemanticKernel.Connectors.Elasticsearch/ElasticsearchServiceCollectionExtensions.cs [115:136]
public static IServiceCollection AddElasticsearchVectorStoreRecordCollection<TKey, TRecord>(
this IServiceCollection services,
string collectionName,
IElasticsearchClientSettings clientSettings,
ElasticsearchVectorStoreRecordCollectionOptions<TRecord>? options = default,
string? serviceId = default)
where TKey : notnull
{
services.AddKeyedSingleton<IVectorStoreRecordCollection<TKey, TRecord>>(
serviceId,
(sp, _) =>
{
var elasticsearchClient = new ElasticsearchClient(clientSettings);
var selectedOptions = options ?? sp.GetService<ElasticsearchVectorStoreRecordCollectionOptions<TRecord>>();
return (new ElasticsearchVectorStoreRecordCollection<TRecord>(elasticsearchClient, collectionName, selectedOptions) as IVectorStoreRecordCollection<TKey, TRecord>)!;
});
AddVectorizedSearch<TKey, TRecord>(services, serviceId);
return services;
}