using Elastic.Clients.Elasticsearch.IndexManagement;
using ElasticSearchStudy.Core;
namespace ElasticSearchStudy.UnitTest
{
public class UseElasticSearchTest
{
private readonly ITestOutputHelper _output;
private readonly ElasticsearchClient _client;
public UseElasticSearchTest(ITestOutputHelper outputHelper)
{
_output = outputHelper;
var elasticSetting = new ElasticsearchClientSettings(new Uri("https://127.0.0.1:9201"))
.CertificateFingerprint("e57ce099af49fb34742cddffe1271c4ed709ef29649537fe89e6bee32728444d")
.Authentication(new BasicAuthentication("elastic", "es-461400"))
//.DefaultIndex("student")
;
_client = new ElasticsearchClient(elasticSetting);
}
///
/// 请求ES服务主页
///
[Fact]
public void Ping_Test()
{
var pingResponse = _client.Ping();
if (pingResponse.IsSuccess())
{
_output.WriteLine($"请求成功,{pingResponse.DebugInformation}");
}
else
{
_output.WriteLine("请求失败");
}
Assert.True(pingResponse.IsSuccess());
}
///
/// 集群健康信息
///
[Fact]
public void Health_Test()
{
var response = _client.Cluster.Health();
Assert.True(response.IsSuccess());
//输出信息
_output.WriteLine($"集群名称:{response.ClusterName}");
_output.WriteLine($"集群状态:{response.Status}");
_output.WriteLine($"节点数量:{response.NumberOfNodes}");
_output.WriteLine($"数据节点:{response.NumberOfNodes}");
_output.WriteLine($"索引数量:{response.Indices?.Count ?? 0}");
if (response.Indices != null)
{
foreach (var node in response.Indices)
{
_output.WriteLine($"Key={node.Key},value={node.Value}");
}
}
_output.WriteLine($"ActiveShards:{response.ActiveShards}");
_output.WriteLine($"ActivePrimaryShards:{response.ActivePrimaryShards}");
_output.WriteLine($"ApiCallDetails:{response.ApiCallDetails}");
_output.WriteLine($"错误信息:{response.ElasticsearchServerError}");
_output.WriteLine($"警告信息:{string.Join("", response.ElasticsearchWarnings)}");
}
///
/// 节点信息
///
[Fact]
public void Node_Test()
{
var response = _client.Info();
Assert.True(response.IsSuccess());
//输出信息
_output.WriteLine($"节点名称:{response.Name}");
_output.WriteLine($"集群名称:{response.ClusterName}");
_output.WriteLine($"集群UUID:{response.ClusterUuid}");
_output.WriteLine($"ES标语:{response.Tagline}");
_output.WriteLine($"版本号:{response.Version.Number}");
_output.WriteLine($"构建风格:{response.Version.BuildFlavor}");
_output.WriteLine($"构建类型:{response.Version.BuildType}");
_output.WriteLine($"构建哈希:{response.Version.BuildHash}");
_output.WriteLine($"构建日期:{response.Version.BuildDate}");
_output.WriteLine($"生成快照:{response.Version.BuildSnapshot}");
_output.WriteLine($"Lucene版本:{response.Version.LuceneVersion}");
_output.WriteLine($"最低兼容性版本:{response.Version.MinimumWireCompatibilityVersion}");
_output.WriteLine($"最小索引兼容性版本 :{response.Version.MinimumIndexCompatibilityVersion}");
_output.WriteLine($"错误信息:{response.ElasticsearchServerError}");
_output.WriteLine($"警告信息:{string.Join("", response.ElasticsearchWarnings)}");
}
///
/// 向student索引,添加文档
///
[Fact]
public void AddDocument_Test()
{
var stu = new Student()
{
Name = "Test",
Age =55,
School = "太康二高",
Grade = "五一班",
Address ="太康县县委家属楼xxx"
};
var request = new IndexRequest(document: stu,index: "student");
var response = _client.Index(request);
Assert.True(response.IsSuccess());
}
}
}