elasticsearch7.x
[ExposeServices(isSingleton: true)]
public class ElasticSearchServer : IElasticSearchServer
{
public IElasticClient ElasticLinqClient { get; set; }
public IElasticLowLevelClient ElasticJsonClient { get; set; }
public ElasticSearchServer(ESConfig esConfig)
{
var urls = esConfig.Urls.ConvertAll(x => new Uri(x));
var connectonPool = new StaticConnectionPool(urls);
var settings=new ConnectionSettings(connectonPool).RequestTimeout(TimeSpan.FromSeconds(esConfig.Timeout));
this.ElasticJsonClient=new ElasticLowLevelClient(settings);
this.ElasticLinqClient= new ElasticClient(settings);//linq请求客户端初始化
}
#region 创建Index。指定分片
/// <summary>
/// 创建Index,如果已经存在则返回
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="indexName">index名称</param>
/// <param name="numberOfReplicas">副本数量</param>
/// <param name="numberOfShards">分片数量</param>
/// <returns></returns>
public async Task<bool> CreateIndexAsync<T>(string indexName,
int numberOfReplicas,
int numberOfShards,
CancellationToken cancellationToken = default) where T : class
{
var indexExistInfo = this.ElasticLinqClient.Indices.ExistsAsync(indexName,
item => item.IgnoreUnavailable(false),
cancellationToken);
var indexExist = await indexExistInfo;
if (indexExist.IsValid)
{