本示例采用Elasticsearch+Nest
网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例。比如新增或修改索引,都是发起一个request新增或修改一条数据,当一次性修改几千条数据时,发起的requst请求过多容易导致429 Too Many Request的错误,单个新增修改索引就非常不适用。其实Nest有批量新增、修改索引的功能,批量删除也可以。现将项目中采用Elasticsearch的C#代码分享如下:
使用NEST客户端
1.连接
public ElasticClient GetElasticClient(string esServer, string IndexName)
{
ElasticClient client = null;
string[] server = esServer.Split(',');
Uri[] nodes = new Uri[server.Length];
for (int i = 0; i < server.Length;i++ )
{
nodes[i] = new Uri(server[i]);
}
var connectionPool = new SniffingConnectionPool(nodes);
var settings = new ConnectionSettings(
connectionPool
);
settings.DefaultIndex(IndexName);
client = new ElasticClient(settings);
return client;
}
2.添加索引
var indexExist = client.IndexExists(IndexName);
if (!indexExist.Exists)
{
//基本配置
IIndexState indexState = new IndexState()
{
Settings = new IndexSettings()
{
NumberOfReplicas = 1,//副本数
NumberOfShards = 6//分片数
}
};
//ICreateIndexResponse response = client.CreateIndex(IndexName, p => p.Mappings(m => m.Map<ES_PUB_Stock>(mp => mp.AutoMap())));
ICreateIndexResponse response = client.CreateI