Elasticsearch BulkAll с NEST: превышена максимальная емкость - PullRequest
0 голосов
/ 17 апреля 2019

Я использую следующий код для bulkindex документов. Это работает для всего, кроме моей модели Продукта, но только когда я пытаюсь проиндексировать более нескольких документов. Если я делаю только 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
        }))
...