赞
踩
JDK下载地址:
https://www.oracle.com/java/technologies/downloads/#jdk17-windows
elasticsearch的下载地址:
https://www.elastic.co/cn/downloads/elasticsearch
分词器:
https://github.com/medcl/elasticsearch-analysis-ik/releases
kibana工具下载地址:
https://www.elastic.co/cn/downloads/kibana
安装ES8.0版本以上,对应JDK选项17。
分词器和 kibana版本与ES版本保持一致即可。
首先确保安装了JDK运行环境。
首先解压Elasticsearch
打开plugins文件夹,创建ik文件夹,并将分词器中所有解压文件复制到该目录下
回到ES的bin目录,cmd路径
输入elasticsearch-plugin list可查看已安装的ik
直接解压缩即可(注意ES默认的地址是https://localhost:9200/可在Kibana的config目录下的kibana.yml中查询是否匹配)。
回到Elasticsearch的bin目录,找到elasticsearch.bat文件双击运行即可(注意,不要关闭开打的命令窗口)
如果不想每次都双击执行,可以将其安装为windows服务,在该bin目录下执行
cmd命令:elasticsearch.bat install
执行完毕后,可在服务中查到对应的windows服务,可将启动类型设置为自动。
ES在8.0版本以上默认是启用xpack密码访问的,如果想直接调试可以将其关闭,只需将config目录下elasticsearch.yml文件的xpack.security.enabled设置为false
设置完成后,重启ES相关服务后,直接通过http://192.168.1.117:9200/访问即可。
但是,为了安全起见,这里不建议取消密码,如需密码访问,尽量用自己创建的账户进行访问。
创建用户及授权命令如下,在bin文件目录执行cmd,我用用户tc为例。
添加用户
elasticsearch-users useradd tc (创建用户的时候,会让你输入密码,cmd的保护机制,输入的密码不会在命令中显示,正常输入后回车即可。)
赋管理员角色权限
elasticsearch-users roles -a superuser tc
赋kibana的用户角色
elasticsearch-users roles -a kibana_system tc
赋logstash的用户角色
elasticsearch-users roles -a logstash_system tc
修改密码
elasticsearch-users passwd tc
创建完用户及密码后,通过https://192.168.1.117:9200/进行访问(注意:密码访问的方式是https的方式)
打开Kibana的bin目录下的kibana.bat文件
待命令行初始化完成后,密码登录进去即可(第一次初始化的时候,可能需要一个6位数的密钥,我们在Kibana的bin目录下执行kibana-verification-code.bat,然后在Kibana命令控制台即可找到对应的密钥)
然后导航定位到Dev Tools中即可进行调试操作。
调试操作如下
开发VS创建一个控制台,并引用Elasticsearch.Net包
新增一个PersonDetail的class方便测试
public class PersonDetail
{
public long Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
新建并插入或更新索引数据(注意,默认ES启用加密后,证书是有问题的,为了忽略证书错误,可以暂时加上
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;)
/// <summary> /// 新建并插入或更新索引数据 /// </summary> public static void CreateIndex() { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; var settings = new ConnectionConfiguration(new Uri("https://192.168.1.117:9200")) .BasicAuthentication("tc", "123456") .RequestTimeout(TimeSpan.FromMinutes(2)); var lowlevelClient = new ElasticLowLevelClient(settings); IEnumerable<PersonDetail> persons = new List<PersonDetail> { new PersonDetail() { Id = 4, FirstName = "zhang", LastName = "san", }, new PersonDetail() { Id = 5, FirstName = "li", LastName = "si", }, new PersonDetail() { Id = 6, FirstName = "wang", LastName = "wu", }, new PersonDetail() { Id = 7, FirstName = "zhao", LastName = "liu", }, new PersonDetail() { Id = 17, FirstName = "tc", LastName = "tc", }, new PersonDetail() { Id = 18, FirstName = "tc", LastName = "tc", } }; foreach (var item in persons) { IndexRequestParameters postParam = new IndexRequestParameters(); postParam.Refresh = Refresh.True; var value = lowlevelClient.Index<StringResponse>("user", item.Id.ToString(), PostData.Serializable(item), postParam); } }
删除索引数据
/// <summary> /// 删除索引数据 /// </summary> public static void DeleteIndex() { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; var settings = new ConnectionConfiguration(new Uri("https://192.168.1.117:9200")) .BasicAuthentication("tc", "123456") .RequestTimeout(TimeSpan.FromMinutes(2)); var lowlevelClient = new ElasticLowLevelClient(settings); DeleteRequestParameters postParam = new DeleteRequestParameters(); postParam.Refresh = Refresh.True; var value = lowlevelClient.Delete<StringResponse>("user", "4", postParam); }
查询索引数据
/// <summary> /// 查询索引数据 /// </summary> public static void QueryIndex() { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; var settings = new ConnectionConfiguration(new Uri("https://192.168.1.117:9200")) .BasicAuthentication("tc","123456") .RequestTimeout(TimeSpan.FromMinutes(2)); var lowlevelClient = new ElasticLowLevelClient(settings); var queryData = new { query = new { @bool = new { must = new object[] { new { term = new { Id = "17"} }, new { term = new { FirstName = "tc"} } } } } }; var searchResponse = lowlevelClient.Search<StringResponse>("user", PostData.Serializable(queryData)); }
一些复杂的查询及操作可参照官网的文档
https://www.elastic.co/guide/index.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。