public async Task Consume(ConsumeContext <UserPersisted> context) { var alias = await _elasticClient.AliasExistsAsync(new AliasExistsDescriptor().Name(context.Message.Id.ToString())); if (alias.Exists) { await _elasticClient.AliasAsync(a => a .Remove(r => r.Index("records").Alias(context.Message.Id.ToString())) .Remove(r => r.Index("folders").Alias(context.Message.Id.ToString())) .Remove(r => r.Index("files").Alias(context.Message.Id.ToString())) .Remove(r => r.Index("models").Alias(context.Message.Id.ToString()))); } try { await _elasticClient.AliasAsync(a => a .Add(add => add.Index("files").Alias(context.Message.Id.ToString()) .Filter <dynamic>(qc => qc.Bool(b => b.Should(s => s.Term("OwnedBy", context.Message.Id.ToString()), s => s.Term("IsPublic", true))))) .Add(add => add.Index("folders").Alias(context.Message.Id.ToString()) .Filter <dynamic>(qc => qc.Bool(b => b.Should(s => s.Term("OwnedBy", context.Message.Id.ToString()), s => s.Term("IsPublic", true))))) .Add(add => add.Index("records").Alias(context.Message.Id.ToString()) .Filter <dynamic>(qc => qc.Bool(b => b.Should(s => s.Term("OwnedBy", context.Message.Id.ToString()), s => s.Term("IsPublic", true))))) .Add(add => add.Index("models").Alias(context.Message.Id.ToString()) .Filter <dynamic>(qc => qc.Bool(b => b.Should(s => s.Term("OwnedBy", context.Message.Id.ToString()), s => s.Term("IsPublic", true))))) ); Log.Information($"Alias {context.Message.Id} successfully created"); } catch (ElasticsearchClientException e) { Log.Error($"Creating alias server error: {e.Response.ServerError}"); } }
public override async Task ProfileAsync(IElasticClient client, ColoredConsoleWriter output) { for (int i = 0; i < _iterations; i++) { var aliasResponse = await client.AliasExistsAsync(a => a .Index(typeof(Developer)) .Name(i % 2 == 0 ? _aliasName : "non-existent-alias") ).ConfigureAwait(false); if (!aliasResponse.IsValid) output.WriteOrange($"Invalid response from {nameof(AliasExistsAsyncOperation)} operation"); } }
public override async Task ProfileAsync(IElasticClient client, ColoredConsoleWriter output) { for (int i = 0; i < _iterations; i++) { var aliasResponse = await client.AliasExistsAsync(a => a .Index(typeof(Developer)) .Name(i % 2 == 0 ? _aliasName : "non-existent-alias") ).ConfigureAwait(false); if (!aliasResponse.IsValid) { output.WriteOrange($"Invalid response from {nameof(AliasExistsAsyncOperation)} operation"); } } }
public async Task IndexEntityAsync(string indexName, string typeName, Guid id) { dynamic entity = await GetEntityFromDatabase(id); try { var indexingResult = await _elasticClient.IndexAsync <object>(new IndexRequest <object>(entity, indexName, typeName, id)); Guid userId = entity.OwnedBy; var alias = await _elasticClient.AliasExistsAsync(new AliasExistsDescriptor().Name(userId.ToString()).Index(Indices.Parse(indexName))); if (!alias.Exists) { await _elasticClient.AliasAsync(a => a .Add(add => add.Index(indexName).Alias(userId.ToString()) .Filter <dynamic>(qc => qc.Bool(b => b.Should(s => s.Term("OwnedBy", userId.ToString()), s => s.Term("IsPublic", true)))))); } } catch (ElasticsearchClientException e) { Log.Error($"{e.Response.ServerError}"); } }
public static Task <IExistsResponse> AliasExistsAsync(this IElasticClient client, string aliasName, string indexName = null) { return(client.AliasExistsAsync(new AliasExistsRequest(indexName, aliasName))); }