/// <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);
        }
        /// <summary>
        /// Удаление документов
        /// </summary>
        /// <param name="ids">Идентификаторы в формате массива Json ["1","2","3"]</param>
        /// <param name="indexDelete">Если true, то операция удаления индекса целиком</param>
        /// <example>
        /// DELETE: api/CompanyDocument/["5","6","7"]
        /// </example>
        public void Delete([FromUri] string ids, [FromUri] bool indexDelete = false)
        {
            Domain.CompanyDocument.CompanyDocumentWriter сompanyDocumentWriter =
                new CompanyDocumentWriter(_elasticConnectionString);

            if (indexDelete)
            {
                сompanyDocumentWriter.IndexDelete(indexName: new CompanyDocument().IndexName, existingConnection: null);
            }
            else
            {
                JArray jArray = JArray.Parse(ids);

                var documentList =
                    jArray.Select(item => new CompanyDocument()
                {
                    Id = item.ToString()
                }).ToList <IElasticDocument>();

                сompanyDocumentWriter.BulkDelete(documentList);
            }
        }