我一直在寻找所有地方,但无法找到这个问题的合适答案。我使用以下代码创建了一个 NEST 客户端:
var myIndex = "myTestIndex";
var myType = "myTestType";
var myClusterUri= "http://localhost:9200";
var uri = new Uri(myClusterUri);
var settings = new ConnectionSettings(uri);
var client = new ElasticClient(settings);
然后,使用它来调用批量 api。
var myJson = PopulateJsonForBulkAPI();
var rawBulkResult = client.Raw.Bulk(myIndex, myType, myJson);
我遇到的问题是在进行批量 api 调用时出现 OutOfMemoryException。填充 myJson 的方法创建了一个巨大的 JSON 块,但不足以引发异常(但如果它被复制,则足以引发异常)。然后,当我调用批量 api 时,它会抛出 OutOfMemoryException,因为 NEST 保留原始请求(本质上,复制 JSON 并且没有足够的内存来保留所有内容)。有没有办法调用 Bulk API,但告诉 NEST 不要保留原始请求,这样大块 JSON 就不会在内存中重复?
编辑
我正在使用 NEST 1.7.2 版和 ElasticSearch 1.7.2 版