【问题标题】:Build errors after upgrading from Elasticsearch 5.5.0 to 7.5.1从 Elasticsearch 5.5.0 升级到 7.5.1 后构建错误
【发布时间】:2020-07-17 18:16:02
【问题描述】:

我最近将我的应用程序中的Elasticsearch.NetNEST 从版本 5.5.0 升级到了 7.5.1,我遇到了一堆构建错误。我已经设法解决了其中一些问题,但以下问题我仍不清楚:

1) ElasticLowLevelClient.Msearch

    MultiSearchRequest multiSearchRequest = new MultiSearchRequest { Operations = operations };
    MultiSearchResponseData response = Converter.ToMultiSearchResponseData(client.Msearch<byte[]>("articles", multiSearchRequest));

operations 的类型为 Dictionary&lt;string, Nest.ISearchRequest&gt;,我收到以下错误:

严重性代码描述项目文件行抑制状态 错误 CS1061 'ElasticLowLevelClient' 不包含 'Msearch' 的定义,并且找不到接受第一个参数类型为 'ElasticLowLevelClient' 的可访问扩展方法 'Msearch'(您是否缺少 using 指令或程序集引用?)

2) Elasticsearch.Net.PostData

    SearchRequest request = new SearchRequest
    {
        Size = 1,
        Query = new QueryStringQuery { DefaultField = new Field("urlName"), Query = "(" + articleUrl + ")" },
    };
    ElasticsearchResponse<string> response = client.Search<string>("detailarticle", new PostData<object>(request));

我收到以下错误:

严重性代码描述项目文件行抑制状态 错误 CS1729 'PostData' 不包含采用 1 个参数的构造函数

3) BulkUpdateOperation 和 PostDate:

public void UpdateArticlesIndex(IEnumerable<ArticleUpdateModel> articles)
{
    if (articles == null || articles.Count() == 0)
        return;

    List<IBulkOperation> operations = new List<IBulkOperation>();
    foreach (var a in articles)
    {
        operations.Add(new BulkUpdateOperation<object, object>(a.DocumentId)
        {
            Index = "articles",
            Type = "_doc",
            Doc = a.Value,
        });
    }

    BulkRequest request = new BulkRequest
    {
        Operations = operations,
    };

    client.Bulk<string>(new PostData<object>(request));
}

我收到以下两个错误:

严重性代码描述项目文件行抑制状态 错误 CS0117“BulkUpdateOperation”不包含“类型”的定义

严重性代码描述项目文件行抑制状态 错误 CS1729 'PostData' 不包含采用 1 个参数的构造函数

我尝试过弄乱构造函数并更改声明,但没有产生任何预期的结果。我还查看了 Elasticsearch 文档,但没有找到任何相关内容

任何有关解决这些构建错误的帮助将不胜感激

【问题讨论】:

    标签: c# asp.net .net elasticsearch nest


    【解决方案1】:
    1. ElasticLowLevelClient.Msearch

      MultiSearchRequest multiSearchRequest = new MultiSearchRequest { 操作 = 操作 }; MultiSearchResponseData 响应 = Converter.ToMultiSearchResponseData(client.Msearch("articles", 多搜索请求));其中操作的类型是 Dictionary,我收到以下错误:

    严重性代码描述项目文件行抑制状态错误 CS1061 'ElasticLowLevelClient' 不包含对 'Msearch' 并且没有可访问的扩展方法 'Msearch' 接受 可以找到“ElasticLowLevelClient”类型的第一个参数(你是 缺少 using 指令或程序集引用?)

    使用MultiSearch 代替Msearch,将MultiSearchRequest 包装在PostData.Serialiable 中,并将响应类型从byte[] 更改为BytesResponse。请注意,必须从高级客户端的实例访问低级客户端,以便正确序列化MultiSearchRequest更具体地说,应该使用ConnectionSettings,它配置了一个解析器将使用正确的格式化程序正确地 JSON 序列化MultiSearchRequest

    var client = new ElasticClient();
    MultiSearchRequest multiSearchRequest = new MultiSearchRequest { Operations = operations };
    var response = client.LowLevel.MultiSearch<BytesResponse>("articles", PostData.Serializable(multiSearchRequest));
    byte[] bytes = response.Body;
    
    1. Elasticsearch.Net.PostData

      SearchRequest 请求 = 新 SearchRequest { 大小 = 1, Query = new QueryStringQuery { DefaultField = new Field("urlName"), Query = "(" + articleUrl + ")" }, }; ElasticsearchResponse response = client.Search("detailarticle", new PostData(request)); 我收到以下错误:

    严重性代码描述项目文件行抑制状态错误 CS1729 'PostData' 不包含采用 1 的构造函数 论据

    使用PostData.Serializable&lt;T&gt;(T data) 并返回StringResponse

    var client = new ElasticClient();
    var articleUrl = "example.com";
    
    SearchRequest request = new SearchRequest
    {
        Size = 1,
        Query = new QueryStringQuery { DefaultField = new Field("urlName"), Query = "(" + articleUrl + ")" },
    };
    var response = client.LowLevel.Search<StringResponse>("detailarticle", PostData.Serializable(request));
    var str = response.Body;
    

    我收到以下两个错误:

    严重性代码描述项目文件行抑制状态错误 CS0117 'BulkUpdateOperation' 不包含 “类型”的定义

    严重性代码描述项目文件行抑制状态错误 CS1729 'PostData' 不包含采用 1 的构造函数 论据

    删除 Type,因为类型在 Elasticsearch 中将消失,并且已在 NEST 7.x 中删除以用于批量请求。客户端将对 API 使用 _doc。与2的答案类似,您应该将BulkRequest包裹在PostData.Serializable&lt;T&gt;(T data)

    【讨论】:

      猜你喜欢
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 2019-03-18
      • 2015-11-12
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多