当前位置:   article > 正文

Windows下安装及使用 Elasticsearch_elasticsearch for windwos

elasticsearch for windwos

准备

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版本保持一致即可。

ES资源整合包

安装JDK

首先确保安装了JDK运行环境。

安装Elasticsearch及相关包

首先解压Elasticsearch
在这里插入图片描述

安装分词器

打开plugins文件夹,创建ik文件夹,并将分词器中所有解压文件复制到该目录下

在这里插入图片描述
回到ES的bin目录,cmd路径

在这里插入图片描述
输入elasticsearch-plugin list可查看已安装的ik

在这里插入图片描述

安装可视化工具

直接解压缩即可(注意ES默认的地址是https://localhost:9200/可在Kibana的config目录下的kibana.yml中查询是否匹配)。

在这里插入图片描述

运行 Elasticsearch

回到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

打开Kibana的bin目录下的kibana.bat文件

在这里插入图片描述

待命令行初始化完成后,密码登录进去即可(第一次初始化的时候,可能需要一个6位数的密钥,我们在Kibana的bin目录下执行kibana-verification-code.bat,然后在Kibana命令控制台即可找到对应的密钥)

在这里插入图片描述
然后导航定位到Dev Tools中即可进行调试操作。

在这里插入图片描述

调试操作如下

在这里插入图片描述

通过VS进行Elasticsearch的开发

开发VS创建一个控制台,并引用Elasticsearch.Net包

在这里插入图片描述

新增一个PersonDetail的class方便测试

    public class PersonDetail
    {
        public long Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

新建并插入或更新索引数据(注意,默认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);
            }
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

删除索引数据

        /// <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);
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

查询索引数据

        /// <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));

        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

一些复杂的查询及操作可参照官网的文档
https://www.elastic.co/guide/index.html

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号