예제 #1
0
        public Result Update(string dataSetName, string id, DocumentElastic documentOriginal, string newId, object document)
        {
            var documentQuery = DocumentQuery(dataSetName);

            if (!string.Equals(id, newId, StringComparison.Ordinal))
            {
                var documentReindexed = Get(dataSetName, id);
                documentReindexed.Id           = newId;
                documentReindexed.ModifiedDate = DateTime.UtcNow;

                Delete(dataSetName, id);
                var response = Index(dataSetName, documentReindexed);
                if (response.ItemsWithErrors?.Count > 0)
                {
                    // mivel már törölve lett az eredeti, megpróbáljuk újraindexelni
                    Index(dataSetName, documentOriginal);
                    return(Result.Fail(response.ItemsWithErrors.Select(s => s.Error.Reason).First()));
                }
            }

            var documentModified = Get(dataSetName, newId);

            documentModified.DocumentObject = document;
            documentModified.ModifiedDate   = DateTime.UtcNow;

            documentModified.Text = DocumentHelper.GetConcatenatedText(document, DataSet(dataSetName).DataSet.InterpretedFields, documentOriginal.DocumentObject);

            documentQuery.Update(newId, documentModified);

            return(Result.Ok());
        }
예제 #2
0
        public void RemoveTagIds_ShouldRemove_TagIds()
        {
            // Arrange
            var documentElastic = new DocumentElastic()
            {
                DocumentObject = JToken.FromObject(new
                {
                    nested = new
                    {
                        tags = new string[] { "1", "2", "3", "4" }
                    }
                })
            };

            // Act
            DocumentHelper.RemoveTagIds(documentElastic.DocumentObject, "nested.tags", new List <string>()
            {
                "2", "4"
            });

            // Assert
            dynamic dyn = documentElastic.DocumentObject;

            Assert.Equal((dyn.nested.tags as JArray).Select(s => (string)s).ToArray(), new string[] { "1", "3" });
        }
예제 #3
0
        public string Update(string id, DocumentElastic documentElastic)
        {
            var response = Client.Update(new DocumentPath <DocumentElastic>(id), ur => ur.Doc(documentElastic));

            ResponseValidator(response);
            ResponseValidator(Client.Flush(IndexName));
            return(response.Id);
        }
예제 #4
0
        public Result Index(string dataSetName, object document, string id)
        {
            var documentElastic = new DocumentElastic
            {
                Id             = id,
                DocumentObject = document,
                Text           = DocumentHelper.GetConcatenatedText(document, DataSet(dataSetName).DataSet.InterpretedFields)
            };

            var response = DocumentQuery(dataSetName).Index(documentElastic);

            if (response.ItemsWithErrors?.Count > 0)
            {
                return(Result.Fail(response.ItemsWithErrors.Select(s => s.Error.Reason).First()));
            }

            return(Result.Ok());
        }
예제 #5
0
 public NestBulkResponse Index(string dataSetName, DocumentElastic documentElastic)
 {
     documentElastic.Text = DocumentHelper.GetConcatenatedText(documentElastic.DocumentObject, DataSet(dataSetName).DataSet.InterpretedFields);
     return(DocumentQuery(dataSetName).Index(documentElastic));
 }
예제 #6
0
 public HashSet <string> GetTagIds(DocumentElastic document, string fieldName)
 {
     return(GetTagIds(new[] { document }, fieldName));
 }
예제 #7
0
 public NestBulkResponse Index(DocumentElastic documentElastic)
 {
     return(Index(new List <DocumentElastic> {
         documentElastic
     }));
 }