【问题标题】:为 Elastic Search NEST 客户端创建抽象层。返回类型应该是什么?
【发布时间】:2022-01-23 03:45:20
【问题描述】:

我正在尝试在 NEST Elastic 搜索客户端上创建一个抽象层,因为我不希望业务逻辑依赖于客户端,因此我可以在必要时更改客户端。但是响应类型应该是什么?我无法使用通用类型,因为它给了我一个错误:

public class StorageClient : IStorageClient
    {
        private readonly IElasticSearchClient _elasticSearchClient;
        public StorageClient(IElasticSearchClient elasticSearchClient)
        {
            _elasticSearchClient = elasticSearchClient;
        }
        public async Task<T> AddData<T>(T requestObject, string index) where T : class
        {
            var response = await _elasticSearchClient.addIndex(requestObject, index);

            return response; I get an error here that cannot convert the NEST index response to type T
        }
    }

这里是弹性搜索客户端

 public async Task<IndexResponse> addIndex<T>(T document, string index) where T : class
        {

            _client = CreateElasticClient();

            return await _client.IndexAsync(elasticValues, idx => idx.Index(index.ToLower()));
        }

【问题讨论】:

    标签: c# .net elasticsearch


    【解决方案1】:

    签名

    public async Task<T> AddData<T>(T requestObject, string index) where T : class
    

    需要返回 requestObject 类型,但返回的是 NEST IndexResponse 类型的任务。

    我会质疑以IElasticSearchClient 的形式围绕 NEST 进行抽象和以IStorageClient 的形式围绕存储进行抽象的价值。 似乎直接使用 NEST 客户端的IStorageClient 的具体实现就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多