Exemple #1
0
        public async Task <IBulkResponse> SaveAsync(List <SitePackChannel> sitepacks, CancellationToken cancellationToken)
        {
            var descriptor = new BulkDescriptor();

            descriptor.Pipeline(ElasticConnectionClient.SITE_PACK_PIPELINE);
            descriptor.IndexMany(sitepacks);
            descriptor.Refresh(Elasticsearch.Net.Refresh.True);
            return(await _elasticConnectionClient.Client.Value.BulkAsync(descriptor, cancellationToken));
        }
Exemple #2
0
        /// <summary>
        /// Force update country field
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <IBulkResponse> SyncCountrySitePackAsync(CancellationToken cancellationToken = default)
        {
            _logger.LogInformation($"Lister les SitePackChannels");

            var tvgSites = await _elasticConnectionClient.Client.Value.SearchAsync <SitePackChannel>(s => s
                                                                                                     .Index(_elasticConnectionClient.ElasticConfig.SitePackIndex)
                                                                                                     .Size(_elasticConnectionClient.ElasticConfig.MaxResultWindow)
                                                                                                     .From(0)
                                                                                                     , cancellationToken);

            var descriptor = new BulkDescriptor();

            descriptor.Pipeline(ElasticConnectionClient.SITE_PACK_PIPELINE);
            descriptor.IndexMany(tvgSites.Documents);
            descriptor.Refresh(Elasticsearch.Net.Refresh.True);

            return(await _elasticConnectionClient.Client.Value.BulkAsync(descriptor, cancellationToken));
        }
        /// <summary>
        /// Insert or updates a list of entities into the index
        /// </summary>
        /// <param name="entities">The entities that will be inserted ot update</param>
        /// <param name="idField">The Id field expression</param>
        /// <param name="refresh">Flag to refresh index state with new data</param>
        public static async void UpsertAttachmentsAsync <T>(IList <T> entities, Expression <Func <T, object> > idField, bool refresh = false) where T : EsAttachment
        {
            var indexname = "";
            var pipeline  = "";

            if (entities.Count > 0)
            {
                entities[0].CreateIndex <T>();
                indexname = entities[0].IndexAlias;
                pipeline  = entities[0].PipeLineName;
            }
            else
            {
                return;
            }
            var esClient   = Manager.EsClient;
            var descriptor = new BulkDescriptor();

            descriptor.TypeQueryString("_doc");
            foreach (var doc in entities)
            {
                var idVal  = Utils.GetObjectValue(idField, doc);
                Id  idData = idVal.ToString();

                descriptor.Pipeline(pipeline).Update <T>(op => op
                                                         .Id(idData)
                                                         .Index(indexname)
                                                         .Doc(doc)
                                                         .DocAsUpsert());
            }
            var response = await esClient.BulkAsync(descriptor);

            if (!response.IsValid)
            {
                throw new Exception(response.OriginalException.Message);
            }
            if (refresh)
            {
                esClient.Indices.Refresh(indexname);
            }
        }
Exemple #4
0
        /// <summary>
        /// Synk picons
        /// </summary>
        /// <param name="picons"></param>
        /// <param name="reset">Delete the index and recreate it</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <IBulkResponse> SynkAsync(IEnumerable <Picon> picons, bool reset = false, CancellationToken cancellationToken = default)
        {
            if (reset)
            {
                var res = await _elasticConnectionClient.Client.Value.DeleteByQueryAsync <Picon>(r => r.Query(rq => rq.Wildcard(f => f.Name, "*")), cancellationToken);

                if (!res.IsValid)
                {
                    if (res.ServerError.Status != 404)
                    {
                        throw new ApplicationException(res.ServerError.Error.Reason, res.OriginalException);
                    }
                }
            }

            var descriptor = new BulkDescriptor();

            descriptor.Pipeline(ElasticConnectionClient.PICONS_RETREIVE_CHANNEL_NUMBER_PIPELINE);
            descriptor.IndexMany(picons);
            descriptor.Refresh(Elasticsearch.Net.Refresh.True);

            _logger.LogInformation($"Sync picons count : {picons.Count()}");
            return(await _elasticConnectionClient.Client.Value.BulkAsync(descriptor, cancellationToken));
        }