/// <summary>
        /// Обновление коллекции документов
        /// </summary>
        /// <param name="documentList">Список документов</param>
        /// <param name="delete">
        /// Если true, то операция удаления, иначе операция создания новых и обновления существующих
        /// </param>
        /// <example>
        /// POST: api/CompanyDocument
        /// POST: api/CompanyDocument?delete=true
        /// </example>
        public void Post([FromBody] List <IElasticDocument> documentList, [FromUri] bool delete = false)
        {
            Domain.CompanyDocument.CompanyDocumentWriter productCompanyWriter =
                new CompanyDocumentWriter(_elasticConnectionString);

            if (delete)
            {
                productCompanyWriter.BulkDelete(documentList);
            }
            else
            {
                productCompanyWriter.BulkCreateOrUpdate(documentList);
            }
        }
예제 #2
0
        /// <summary> Запись буфера в Elastic </summary>
        private async Task WriteBuffer(List <IElasticDocument> buffer, CompanyDocumentReaderSettings readerSettings)
        {
            foreach (var doc in buffer)
            {
                doc.UpdateDate = readerSettings.LastStarted;
            }

            var writer = new CompanyDocumentWriter(ElasticConnectionString);
            await writer.BulkCreateOrUpdate(buffer);

            // корректировка параметров для следующей операции чтения:
            readerSettings.LastId = int.Parse(
                buffer.OrderByDescending(d => int.Parse(d.Id)).First().Id);

            this.SaveReaderSettings(readerSettings);
        }