Exemple #1
0
        public static ElasticResult <bool?> ElasticSearchCreateIndices()
        {
            try
            {
                var client = GetElasticClient();

                var isIndexExist = client.IndexExists(Indices.All, i => i.Index(EsIndexName)).Exists;
                if (isIndexExist)
                {
                    return(ElasticResult <bool?> .SuccessResult(true));
                }

                var response = client.CreateIndex(EsIndexName,
                                                  i =>
                                                  i.Mappings(
                                                      m => m
                                                      .Map <ElasticUser>(map => map.AutoMap())
                                                      .Map <ElasticChat>(map => map.AutoMap())
                                                      .Map <ElasticChatUser>(map => map.AutoMap())
                                                      .Map <ElasticMessage>(map => map.AutoMap())));

                return(response.ApiCall.Success
                    ? ElasticResult <bool?> .SuccessResult(true)
                    : ElasticResult <bool?> .FailResult(response.ApiCall.ServerError.Error.ToString()));
            }
            catch
            {
                return(ElasticResult <bool?> .FailResult(ServerErrorMessage));
            }
        }
Exemple #2
0
 public ElasticResult <T[]> GetEntitiesFromElasticResponse <T>(ElasticResponse <T> response) where T : class
 {
     // If request bad executed.
     return(!response.Success
         ? ElasticResult <T[]> .FailResult(response.Message)
         : ElasticResult <T[]> .SuccessResult(
                response.Response.Hits.Select(h => h.Source).Where(s => s != null).ToArray()));
 }
Exemple #3
0
        public ElasticResult <T> Add <T>(string esType, T @object) where T : class, IGuidedEntity
        {
            var response = _elasticRepository.ExecuteCreateOrUpdateRequest(@object, esType);

            return(response.Success
                ? ElasticResult <T> .SuccessResult(@object)
                : ElasticResult <T> .FailResult(response.Message));
        }
        public ElasticResult <bool> Remove(string chatGuid, string userGuid)
        {
            var chatUserResponse = Get(chatGuid, userGuid);

            return(!chatUserResponse.Success
                ? ElasticResult <bool> .FailResult(InvalidDataMessage)
                : _entityRepository.Remove <ElasticChatUser>(EsType, chatUserResponse.Value.Guid));
        }
        public ElasticResult <ElasticUser> Update(ElasticUser user)
        {
            var response = _elasticRepository.ExecuteCreateOrUpdateRequest(user, EsType);

            return(response.Success
                ? ElasticResult <ElasticUser> .SuccessResult(user)
                : ElasticResult <ElasticUser> .FailResult(response.Message));
        }
Exemple #6
0
        public ElasticResult <ElasticChat> Update(ElasticChat chat)
        {
            var response = _elasticRepository.ExecuteCreateOrUpdateRequest(chat, EsType);

            return(response.Success
                ? ElasticResult <ElasticChat> .SuccessResult(chat)
                : ElasticResult <ElasticChat> .FailResult(response.Message));
        }
Exemple #7
0
        public ElasticResult <bool> Remove <T>(string esType, string guid) where T : class
        {
            var documentPath = new DocumentPath <T>(guid).Index(_elasticRepository.EsIndex).Type(esType);
            var response     = _elasticRepository.ExecuteDeleteRequest(documentPath);

            return(response.Success
                ? ElasticResult <bool> .SuccessResult(true)
                : ElasticResult <bool> .FailResult(response.Message));
        }
Exemple #8
0
        public ElasticResult <T[]> GetEntitiesFromElasticResponseWithScroll <T>(ElasticResponse <T>[] responses) where T : class
        {
            var value = new List <T>();

            foreach (var response in responses)
            {
                value.AddRange(GetEntitiesFromElasticResponse(response).Value.Select(s => s));
            }

            return(ElasticResult <T[]> .SuccessResult(value.ToArray()));
        }
        public ElasticResult <ElasticChatUser[]> GetAllByUserGuid(string userGuid)
        {
            var searchDescriptor =
                new SearchDescriptor <ElasticChatUser>().Query(q => q.Term(t => t.Field(f => f.UserGuid).Value(userGuid)))
                .Index(_elasticRepository.EsIndex)
                .Type(EsType);

            var responses = _elasticRepository.ExecuteSearchRequestWithScroll(searchDescriptor);

            return(responses.Any(r => !r.Success)
                ? ElasticResult <ElasticChatUser[]> .FailResult(responses.First(r => !r.Success).Message)
                : _entityRepository.GetEntitiesFromElasticResponseWithScroll(responses));
        }
Exemple #10
0
        public async Task <DataResult> GetItem <Tout, Tin>(string key, string Index) where Tout : class where Tin : class
        {
            ElasticResult <Tout> elasticresult = new ElasticResult <Tout>();
            DBResult <Tin>       dbresult      = new DBResult <Tin>();
            var doc = await _client.GetAsync <Tout>(new DocumentPath <Tout>(key), g => g.Index(Index));

            if (doc.Source != null)//data is in elastic
            {
                elasticresult.Output = doc.Source;

                elasticresult.Exists = true;
            }

            return(elasticresult);
        }
Exemple #11
0
        // Check Chat Is Unique
        private ElasticResult <ElasticChat> CheckChat(ElasticChat chat)
        {
            var searchDescriptor = new SearchDescriptor <ElasticChat>().Query(
                q => q.Term(t => t.Field(f => f.Guid).Value(chat.Guid))).Index(_elasticRepository.EsIndex).Type(EsType);

            var response = _elasticRepository.ExecuteSearchRequest(searchDescriptor);

            // If request well executed. And user is unique.
            if (response.Success && !response.Response.Hits.Any())
            {
                return(ElasticResult <ElasticChat> .SuccessResult(chat));
            }

            return(response.Success
                ? ElasticResult <ElasticChat> .FailResult("Server Error")
                : ElasticResult <ElasticChat> .FailResult(response.Message));
        }
        public ElasticResult <ElasticChatUser> Get(string chatGuid, string userGuid)
        {
            var searchDescriptor =
                new SearchDescriptor <ElasticChatUser>().Query(q => q
                                                               .Bool(b => b
                                                                     .Must(
                                                                         m => m.Term(t => t.Field(f => f.UserGuid).Value(userGuid)),
                                                                         m => m.Term(t => t.Field(f => f.ChatGuid).Value(chatGuid))
                                                                         ))
                                                               )
                .Index(_elasticRepository.EsIndex)
                .Type(EsType);

            var response = _elasticRepository.ExecuteSearchRequest(searchDescriptor);

            return(response.Success
                ? _entityRepository.GetEntityIfOnlyOneEntityInElasticResponse(response)
                : ElasticResult <ElasticChatUser> .FailResult(response.Message));
        }
Exemple #13
0
        public ElasticResult <T> GetEntityIfOnlyOneEntityInElasticResponse <T>(ElasticResponse <T> response)
            where T : class
        {
            // If request bad executed.
            if (!response.Success)
            {
                return(ElasticResult <T> .FailResult(response.Message));
            }

            var hits      = response.Response.Hits;
            var hitsArray = hits as IHit <T>[] ?? hits.ToArray();

            // If found not 1 entity
            if (response.Success && hitsArray.Count() != 1)
            {
                return(ElasticResult <T> .FailResult(null));
            }

            return(ElasticResult <T> .SuccessResult(hitsArray.ElementAt(0).Source));
        }
Exemple #14
0
        public ElasticResult <T[]> GetAllByGuids <T>(string esType, params string[] guids) where T : class
        {
            if (guids.Length == 0)
            {
                return(ElasticResult <T[]> .SuccessResult(new T[] {}));
            }

            var multiGetDescriptor =
                new MultiGetDescriptor().GetMany <T>(guids).Index(_elasticRepository.EsIndex).Type(esType);

            var response = _elasticRepository.ExecuteMultiGetRequest(multiGetDescriptor);

            if (!response.Success)
            {
                return(ElasticResult <T[]> .FailResult(response.Message));
            }

            var multiGetResponse = response.Response;
            var hits             = multiGetResponse.GetMany <T>(guids);

            return(ElasticResult <T[]> .SuccessResult(hits.Select(hit => hit.Source).Where(hit => hit != null).ToArray()));
        }
        private ElasticResult <ElasticChatUser> CheckChatUser(ElasticChatUser chatUser)
        {
            var searchDescriptor = new SearchDescriptor <ElasticChatUser>().Query(
                q =>
                q.Bool(
                    b =>
                    b.Must(
                        m => m.Term(t => t.Field(f => f.ChatGuid).Value(chatUser.ChatGuid)),
                        m => m.Term(t => t.Field(f => f.UserGuid).Value(chatUser.UserGuid)))))
                                   .Index(_elasticRepository.EsIndex)
                                   .Type(EsType);

            var response = _elasticRepository.ExecuteSearchRequest(searchDescriptor);

            // If request well executed. And user is unique.
            if (response.Success && !response.Response.Hits.Any())
            {
                return(ElasticResult <ElasticChatUser> .SuccessResult(chatUser));
            }

            return(response.Success
                ? ElasticResult <ElasticChatUser> .FailResult("User in this chat already!")
                : ElasticResult <ElasticChatUser> .FailResult(response.Message));
        }
Exemple #16
0
 public ElasticSearchResultModel()
 {
     Data          = new ElasticResult();
     NopProductsId = new List <int>();
 }