从 Elasticsearch 5.5.0 升级到 7.5.1 后构建错误
Build errors after upgrading from Elasticsearch 5.5.0 to 7.5.1
我最近将我的应用程序中的 Elasticsearch.Net
和 NEST
从版本 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<string, Nest.ISearchRequest>
类型,我收到以下错误:
严重性代码说明项目文件行抑制状态
错误 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) 批量更新操作和发布日期:
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<object, object>' 不包含 'Type'
的定义
和
严重性代码说明项目文件行抑制状态
错误 CS1729 'PostData' 不包含采用 1 个参数的构造函数
我试过修改构造函数和更改声明,但没有产生任何预期的结果。我也查看了 Elasticsearch 文档,但没有找到任何相关内容
如能提供有关解决这些构建错误的任何帮助,我们将不胜感激
ElasticLowLevelClient.Msearch
MultiSearchRequest multiSearchRequest = new MultiSearchRequest { Operations = operations };
MultiSearchResponseData response = Converter.ToMultiSearchResponseData(client.Msearch<byte[]>("articles",
multiSearchRequest)); Where operations is of type Dictionary<string,
Nest.ISearchRequest>, I am getting the following error:
Severity Code Description Project File Line Suppression State Error
CS1061 'ElasticLowLevelClient' does not contain a definition for
'Msearch' and no accessible extension method 'Msearch' accepting a
first argument of type 'ElasticLowLevelClient' could be found (are you
missing a using directive or an assembly reference?)
使用 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;
Elasticsearch.Net.PostData
SearchRequest request = new SearchRequest
{
Size = 1,
Query = new QueryStringQuery { DefaultField = new Field("urlName"), Query = "(" + articleUrl + ")" },
};
ElasticsearchResponse response = client.Search("detailarticle", new PostData(request));
I am getting the following error:
Severity Code Description Project File Line Suppression State Error
CS1729 'PostData' does not contain a constructor that takes 1
arguments
使用PostData.Serializable<T>(T data)
和return一个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;
I am getting the following two erros:
Severity Code Description Project File Line Suppression State Error
CS0117 'BulkUpdateOperation<object, object>' does not contain a
definition for 'Type'
and
Severity Code Description Project File Line Suppression State Error
CS1729 'PostData' does not contain a constructor that takes 1
arguments
删除 Type
,因为类型将在 Elasticsearch 中消失,并已在 NEST 7.x 中删除以用于批量请求。客户端将使用 _doc
作为 API。与2的答案类似,您应该将BulkRequest
包装在PostData.Serializable<T>(T data)
中
我最近将我的应用程序中的 Elasticsearch.Net
和 NEST
从版本 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<string, Nest.ISearchRequest>
类型,我收到以下错误:
严重性代码说明项目文件行抑制状态 错误 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) 批量更新操作和发布日期:
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<object, object>' 不包含 'Type'
的定义和
严重性代码说明项目文件行抑制状态 错误 CS1729 'PostData' 不包含采用 1 个参数的构造函数
我试过修改构造函数和更改声明,但没有产生任何预期的结果。我也查看了 Elasticsearch 文档,但没有找到任何相关内容
如能提供有关解决这些构建错误的任何帮助,我们将不胜感激
ElasticLowLevelClient.Msearch
MultiSearchRequest multiSearchRequest = new MultiSearchRequest { Operations = operations }; MultiSearchResponseData response = Converter.ToMultiSearchResponseData(client.Msearch<byte[]>("articles", multiSearchRequest)); Where operations is of type Dictionary<string, Nest.ISearchRequest>, I am getting the following error:
Severity Code Description Project File Line Suppression State Error CS1061 'ElasticLowLevelClient' does not contain a definition for 'Msearch' and no accessible extension method 'Msearch' accepting a first argument of type 'ElasticLowLevelClient' could be found (are you missing a using directive or an assembly reference?)
使用 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;
Elasticsearch.Net.PostData
SearchRequest request = new SearchRequest { Size = 1, Query = new QueryStringQuery { DefaultField = new Field("urlName"), Query = "(" + articleUrl + ")" }, }; ElasticsearchResponse response = client.Search("detailarticle", new PostData(request)); I am getting the following error:
Severity Code Description Project File Line Suppression State Error CS1729 'PostData' does not contain a constructor that takes 1 arguments
使用PostData.Serializable<T>(T data)
和return一个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;
I am getting the following two erros:
Severity Code Description Project File Line Suppression State Error CS0117 'BulkUpdateOperation<object, object>' does not contain a definition for 'Type'
and
Severity Code Description Project File Line Suppression State Error CS1729 'PostData' does not contain a constructor that takes 1 arguments
删除 Type
,因为类型将在 Elasticsearch 中消失,并已在 NEST 7.x 中删除以用于批量请求。客户端将使用 _doc
作为 API。与2的答案类似,您应该将BulkRequest
包装在PostData.Serializable<T>(T data)