李玉志 2020-07-26
首先我们要建一个webapi工程,然后下载两个插件:
1,Nest 2,Elasticsearch.Net


下载后,下面就上代码了,首先是elasticsearchHelp帮助类
using Elasticsearch.Net;
using Nest;
using System;
namespace ESAPI.Common
{
public static class ElasticSearchHelper
{public static readonly string url = "http://ip:9200/";//这个是elasticsearch远程访问ip
public static void insert(object t,string index)
{
//设置连接字符串,DefaultIndex中的表名要小写
var settings = new ConnectionSettings(new Uri(url)).DefaultIndex(index);
var client = new ElasticClient(settings);
var doc = t;
//通过 IndexDocument() 方法插入数据
var ndexResponse = client.IndexDocument(doc);
}
/// <summary>
/// 单点链接到ElasticSearch
/// </summary>
/// <param name="url">ElasticSearch的ip地址</param>
/// <returns></returns>
public static ElasticClient OneConnectES(string url)
{
var node = new Uri(url);
var settings = new ConnectionSettings(node);
var client = new ElasticClient(settings);
return client;
}
/// <summary>
/// 指定多个节点使用连接池链接到Elasticsearch集群
/// </summary>
/// <param name="serverurl">链接ip数组</param>
/// <returns></returns>
public static ElasticClient ManyConnectES(string[] serverurl)
{
Uri[] nodes = new Uri[serverurl.Length];
for (int i = 0; i < serverurl.Length; i++)
{
nodes[i] = new Uri(serverurl[i]);
}
var pool = new StaticConnectionPool(nodes);
var settings = new ConnectionSettings(pool);
var client = new ElasticClient(settings);
return client;
}
/// <summary>
/// 创建索引
/// </summary>
/// <param name="elasticClient"></param>
public static CreateIndexResponse CreateIndex(this IElasticClient elasticClient, string indexName, int numberOfReplicas = 1, int numberOfShards = 5)
{
IIndexState indexState = new IndexState
{
Settings = new IndexSettings
{
NumberOfReplicas = numberOfReplicas,
// [副本数量]
NumberOfShards = numberOfShards
}
};
Func<CreateIndexDescriptor, ICreateIndexRequest> func = x => x.InitializeUsing(indexState).Map(m => m.AutoMap());
CreateIndexResponse response = elasticClient.Indices.Create(indexName, func);
return response;
}
}
}控制器代码:
using System;
using ESAPI.Common;
using Microsoft.AspNetCore.Mvc;
namespace ESAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
/// <summary>
/// 删除地址
/// </summary>
/// <param name="id"></param>
[HttpGet("InsertLog")]
public void InsertLog()
{ //插入200条数据
for (int i = 0; i < 200; i++)
{
var d = new
{
Time = DateTime.Now,
Num = 5,
Name = "12313",
info = "hello world!"
};
ElasticSearchHelper.insert(d, "demo");
}
}
}
}运行程序:

查看elasticsearch可视化界面:

很显然,插入成功了!既然是ELK,后续我还会对logstash,Kibana的安装和使用也进行详细的介绍,下一篇,会详细介绍logstash的安装和使用!
另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。