首页 > 解决方案 > 带有 NEST 的 Elasticsearch BulkAll:超出最大容量

问题描述

我正在使用以下代码对文档进行批量索引。它适用于除我的产品模型之外的所有内容,但仅当我尝试索引多个文档时。如果我只做 1 个文件,它工作正常。如果我做10,它会失败。我的 Product 模型不是很复杂,但它确实有一些带有无限自引用循环的嵌套文档,但我确实添加了 ReferenceLoopHandling.Ignore 来处理它。

public bool BulkIndex<T>(IEnumerable<T> items) where T : class
        {
            var waitHandle = new CountdownEvent(1);
            var bulkAll = _client.BulkAll(items, b => b
                .BackOffRetries(2)
                .BackOffTime(TimeSpan.FromSeconds(5))
                .RefreshOnCompleted(true)
                .MaxDegreeOfParallelism(4)
                .Size(100)
                .Index(typeof(T).Name.ToLower())
            );

            bulkAll.Subscribe(new BulkAllObserver(
                onNext: (b) => { Console.Write("."); },
                onError: (e) => { throw e; },
                onCompleted: () => waitHandle.Signal()
            ));
            waitHandle.Wait();
            return true;
        }




        new JsonNetSerializer(builtInSerializer, connectionSettings, () => new JsonSerializerSettings
        {
            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
        }))

标签: elasticsearchnest

解决方案


推荐阅读