zoukankan      html  css  js  c++  java
  • Elasticsearch(ES)的简单使用 for .Net/Windows

    简介

    ElasticsearchES 是一个极其强大,支持海量数据的搜索引擎。 关于ES的应用场景和前世今生有一些很棒的文章都,讲述的很清楚。可以参考,本文主要讲简单的入手使用。

     

       https://www.jianshu.com/p/8494ae9a53a7

     https://www.cnblogs.com/cdchencw/p/12449500.html

    下载和安装

    安装包下载

    https://mirrors.huaweicloud.com/elasticsearch/6.8.0/elasticsearch-6.8.0.msi

    下载完之后是一个window安装包,开始安装

      

    第一步选择安装目录,默认是在c盘。我一般会修改一下安装目录。

    手动新建好这几个文件夹,分别存放es的配置文件,es的数据,es的日志文件

     

     

    点击“NEXT”进入下一步

    选择是否安装为服务,账户信息等几个选项。不用做修改。

    点击“NEXT”进入下一步

     

    设置集群名,节点名 ,端口号,使用内存限制等等。不用做修改默认内存是两个G。不用改,后面有需要改动时可以到配置文件再去修改。

    点击 “NEXT”进入下一步

     

    这里是一些组件的安装,暂时没有要用的,直接跳过

    继续“NEXT”进入下一步

     

    点击INSTALL”开始安装

     

    安装中

     

    安装成功后可以看到多了几个文件

     

     进入到6.8.0

     

    双击elasticsearch.exe 启动es服务。(有的版本是elasticsearch.bat)。

     双击后会闪一下,一般就已经启动了。在浏览器 输入 http://localhost:9200/ 如果看到下面这个样子就代表启动成功了。

     

    -------------END-------------

    可视化工具

    Mysql 有可视化的工具navcatredis有可视化工具 redisManegerES当然也有他自己的可视化工具 elasticsearch-head

     elasticsearch-head是一个ES客户端工具即可通过Restful APIElasticsearch进行操作,但也有一些客户端工具提供对于ElasticSearch更加友好的可视化操作支持,比如elasticsearch-head 

    下载和安装

    下载地址 https://codeload.github.com/mobz/elasticsearch-head/zip/master 

    完成下载后解压文件,然后复制整个文件到es的安装目录下,随便哪儿都行,方便好找就可以。

     

    elasticsearch-head 插件是一个node工程,所以提前需要安装好node环境和npm才能安装插件Node安装和npm安装方法这里不在复述。

    步骤1 :安装 grunt-cli

    使用cmd命令npm install -g grunt-cli全局安装  

     

    步骤2 :使用命令行进入到刚才复制过来的文件夹elasticsearch-head-master目录下,使用命令行npm install 进行安装

     

    安装完成后在浏览器输入 http://localhost:9100/

    如果能看着这个样子代表安装成功了

    但是!如果看到有个“健康集群状态:未连接”,这说明可视化工具还没有连上ES服务

    解决办法:

    找到es的配置文件elasticsearch.yml,在最下面加入这么几行

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE

    http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

    (是不是很眼熟,和后端配置跨域一样,其实就是跨域访问一个是9200端口,一个是9300端口)

     

     

    修改完成后,保存存并刷新浏览器,然后你会发现依然没有连上,这是因为配置文件启动时已近被加载了,需要重启es才能读取改动后的配置。

    一些es安装时是以服务的形式安装的,只关掉启动es的黑窗并不能关闭ES。而es好像也并没有提供重启或者关闭的入口。这里有一个更直接的方法:通过命令行找到es的进程IDkill掉,然后再次启动。

    使用命令行 netstat -aon|findstr "9200" 查找9200端口的进程ID

    找到es的进程ID22924(下面几个是子进程)

    使用命令行 :taskkill /f /t /im “22924”  杀死ES的进程

     

    杀死进程之后,再次启动ES,刷新浏览器,就可以看到连接成功了(黄了或者红了或者绿)

     

     

    .netESElasticsearch.Net

    Elasticsearch.Net是.Net下面最常用es操作库

    打开nuget搜索“Elasticsearch.Net”

     

    选择和es相同的版本 6.8.0 安装

    注意:Elasticsearch.Net的版本和es的版本号是相对应的,如果Elasticsearch.Net的版本高于高于es的版本号。会有连接失败的问题

    添加一条数据的操作

     

      var settings = new ConnectionSettings(node).DefaultIndex("student");

      

    代码

    namespace ES_DEMO
    
    {
    
     
    
     
    
        class student
    
        {
    
            public string Id { get; set; }
    
            public int age { get; set; }
    
            public string name { get; set; }
    
            public List<String> likes { get; set; }
    
        }
    
        class Program
    
        {
    
             static ElasticClient client;  
    
            static void Main(string [] args)
    
            {
    
                var node = new Uri("http://localhost:9200");
    
                var settings = new ConnectionSettings(node).DefaultIndex("student");
    
                // var settings = new ConnectionSettings(pool).DefaultIndex("crm.base.log").BasicAuthentication("elastic", "caKBawShu0Pm7BsjSFbd");
    
                client = new ElasticClient(settings);
    
                create();
    
                Console.ReadLine();
    
            }
    
            public static void create()
    
            {
    
     
    
                var stu = new student();
    
                stu.Id = "1";
    
                stu.age = 2;
    
                stu.name = "jimf";
    
                var log = new CreateRequest<student>(Guid.NewGuid());
    
                log.Document = stu;
    
                var r = client.Create<student>(log);
    
     
    
            }
    
     
    
            public static void delete()
    
            {
    
                client.Delete<student>(new DocumentPath<student>("1"));
    
            }
    
            public static void query()
    
            {
    
                var stu = client.Get<student>("6cfb5050-d175-4fb1-8f8d-c6d88cb0e2a4");
    
                var tweet = JsonConvert.SerializeObject(stu);
    
     
    
                var stus = client.Search<student>(s => s
    
               .From(0)
    
               .Size(10)
    
               .Query(q =>
    
                       q.Term(t => t.name, "jim")
    
                       || q.Match(mq => mq.Field(f => f.age).Query("1"))
    
                   )
    
                );
    
     
    
            }
    
           
    
     
    
        }
    
      
    
     
    
    }
    

      

    每次连接需要设置一下索引参数,索引名必须是小写,否则会抛出异常

     

    Es中的索引index有点像关系型数据库中的“库”的概念,一个索引区分一个库,而type有点像“表”的概念。

    这是添加成功后的返回值

     

    在可视化工具里面查看我们刚才添加的一条数据

    打开可视化工具 http://localhost:9100/

    键入查询的url  http://localhost:9200/student/_search/

    使用匹配所有的{"query":{"match_all":{}}} 就能查看到我们添加的结果

     

    ES的查询语句

    Es的查询语句较为复杂且用的比较多,和传统的关系型数据库以及比较类似的mongo都不太一样。

    今天先写这么多,下期写es的查询语句

    -----------------------未完待续------------------------------------

  • 相关阅读:
    【初入职场】工作一个月
    sql中更新数据库用到declare @a in
    Mac 下ll命令 command not found
    GLIBC_2.7升级
    PHP 5.5以后加速插件:Zend Opcache
    ssh的public key的使用
    apache Alias使用问题
    linux下telnet mysql的3306断口,提示Can't connect to MySQL server on localhost (110)
    知乎技术方案初探[转]
    JS刷新父窗口的几种方式
  • 原文地址:https://www.cnblogs.com/jimsfriend/p/13950687.html
Copyright © 2011-2022 走看看