/// <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); } }
/// <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); } }