using Microsoft.Extensions.Options; using Nest; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Yi.Framework.Common.IOCOptions; namespace Yi.Framework.Core { public class ElasticSearchInvoker { private readonly ElasticSearchOptions _elasticSearchOptions; public ElasticSearchInvoker(IOptionsMonitor optionsMonitor) { _elasticSearchOptions = optionsMonitor.CurrentValue; var settings = new ConnectionSettings(new Uri(_elasticSearchOptions.Url)).DefaultIndex(this._elasticSearchOptions.IndexName); Client = new ElasticClient(settings); } private ElasticClient Client; public ElasticClient GetElasticClient() { return Client; } public void Send(List model) where T : class { Client.IndexMany(model); } public void InsertOrUpdata(T model) where T : class { Client.IndexDocument(model); } public bool Delete(string id) where T : class { var response = Client.Delete(id); return response.IsValid; } public bool DropIndex(string indexName) { return Client.Indices.Delete(Indices.Parse(indexName)).IsValid; } public void CreateIndex(string indexName) { var settings = new ConnectionSettings(new Uri(_elasticSearchOptions.Url)).DefaultIndex(indexName); this.Client = new ElasticClient(settings); } } }