zoukankan      html  css  js  c++  java
  • centos7安装elasticsearch

    摘自腾讯云实验室

    https://cloud.tencent.com/developer/labs/search?keyword=elastics

    安装java

    lasticsearch 需要 java8 以上;
    这里安装最新版的 java10 ;
    下载 jdk

    wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm"
    

    因为版本会一直升级;
    如果执行上面这段代码返回了 ERROR 404: Not Found ;
    那说明有新版本了;
    那就自己去官网复制最新的下载链接;
    http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html ;

     

    选中 Accept License Agreement 然后在 jdk-10.0.2_linux-x64_bin.rpm 上右键复制链接地址;
    替换上面命令中的下载链接;
    因为从国外下载比较慢;
    为了方便实验;
    我这里把 10.0.2 版本的先下载下来上传到腾讯云了;
    可以用下面的链接代替;
    wget https://study-1251254015.cos.ap-beijing.myqcloud.com/jdk-10.0.2_linux-x64_bin.rpm
    

    安装 jdk 注意文件名要跟链接中的保持一致;

    sudo rpm -ivh jdk-10.0.2_linux-x64_bin.rpm
    

    能查看到版本号则表示安装成功;

    java -version
    

    安装ElasticSearch  

    下载 elasticsearch ;
    官网的下载链接是: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm 因为从国外下载比较慢;
    为了方便实验我给先下载下来上传到腾讯云了;
    可以使用下面的命令代替官网链接;
     
    wget https://study-1251254015.cos.ap-beijing.myqcloud.com/elasticsearch-6.2.4.rpm
    

    安装 elasticsearch ;

    sudo rpm -ivh elasticsearch-6.2.4.rpm
    

    安装完成后编辑配置项;

    vim /etc/elasticsearch/elasticsearch.yml
    
    去掉下面三行的注释;
    bootstrap.memory_lock: true
    network.host: 192.168.0.1
    http.port: 9200
    
    然后把 network.host 改成 localhost
    启动 elasticsearch ;
    sudo systemctl daemon-reload
    sudo systemctl enable elasticsearch.service
    sudo systemctl start elasticsearch
    

      

    稍等片刻给 elasticsearch 个启动的时间;
    因为 elasticsearch 启动的略慢;
    后续涉及到重启 elasticsearch 的时候也都记得稍等片刻;
    然后查看 9200 端口检查是否成功启动;
    netstat -plntu
    
    如果半天过后仍然没有启动起来;
    可能是内存不够出错;
    vim /etc/elasticsearch/jvm.options
    

      

    把内存改为自己服务器内存的一半以下;
    比如说这里改为 512M ;
    image
    尝试启动;
    sudo systemctl restart elasticsearch
    

      

    然后查看 9200 端口检查是否成功启动;
    netstat -plntu
    

      

    查看状态是否正常;
    curl 'localhost:9200'
    

      

    image
    至此 elasticsearch 算是安装完成了;
     
     

    安装中文分词

    安装 ik-analyzer

    但是如果想用来搜索中文;
    还需要安装中文分词;
    怎么算分词呢?
    全文搜索和中文分词 文章中已经简单介绍过了;
    这里我们从 elasticsearch 实战一遍;
    比如说 白俊遥技术博客 这句话;
    elasticsearch 内置的分词器对中文相当不友好;
    只会一个只一个字的分;
    curl -H 'Content-Type: application/json'  -XGET 'localhost:9200/_analyze?pretty' -d '{"text":"白俊遥技术博客"}'
    

      

    image
    所以我们需要一个中文分词器;
    这里选择和 elasticsearch 配套的 ik-analyzer ;
    安装 ik-analyzer ;
    /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip
    

      

    如果报下面这种错误的话可能是网络不好;
    Exception in thread "main" java.net.ConnectException: Connection timed out (Connection timed out)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    

      

    沐浴更衣大念帅白最帅;
    再试几次即可;
    实在不行;
    那还是用我下载好的链接吧;
    
    
    /usr/share/elasticsearch/bin/elasticsearch-plugin install https://study-1251254015.cos.ap-beijing.myqcloud.com/elasticsearch-analysis-ik-6.2.4.zip
    

      

    然后重新启动下服务;
    
    
    sudo systemctl restart elasticsearch
    

      

    然后查看 9200 端口检查是否成功启动;
    
    
    netstat -plntu
    

      

    看下 ik-analyzer 的效果;
    
    
    curl -H 'Content-Type: application/json'  -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"白俊遥技术博客"}'
    

      

    image
    我们可以看到 技术 和 博客 两个词语已经成功组合到了一起;
    然而本博主 白俊遥 的名字被硬生生的拆成了3个字这怎么忍;
    还好强大的 analysis-ik 支持自定义词库;
    增加自定义词库;
    
    
    vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
    

      

    在 ext_dict 中自定义一个词库文件 baijunyao.dic ;
    image
    增加一个 白俊遥 到词库;
    
    
    echo '白俊遥' > /etc/elasticsearch/analysis-ik/baijunyao.dic
    

      

    重新启动下服务;
    
    
    sudo systemctl restart elasticsearch
    

      

    然后查看 9200 端口检查是否成功启动;
     
    netstat -plntu
    

      

    再看下分词效果 ;
    
    
    curl -H 'Content-Type: application/json'  -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"白俊遥技术博客"}'
    

      

    image
    完工;
     

     

      

      

      

      

      

     

     
  • 相关阅读:
    Java 和因特网
    永久性
    在计算机编程中,一个基本的概念就是同时对多个任务加以控制
    违例控制:解决错误
    清除时的困境:由谁负责清除?
    集合库与方便使用集合
    单根结构
    集合与继承器
    对象的创建和存在时间
    抽象的基础类和接口
  • 原文地址:https://www.cnblogs.com/gezifeiyang/p/11007727.html
Copyright © 2011-2022 走看看