docker安装elasticsearch

Elasticsearch官网

安装ES

##依次执行如下命令

#安装elasticsearch7.12.0,如果不指定版本号则默认安装最新版本
sudo docker pull elasticsearch:7.12.0

#安装对应版本的kibana
#kibana是es的可视化界面
sudo docker pull kibana:7.12.0

#查看所有正在运行的docker容器,检查elasticsearch和kibana是否安装成功
sudo docker ps

#在主机创建es的配置文件
mkdir -p /mydata/elasticsearch/config
#在主机上创建es的数据文件
mkdir -p /mydata/elasticsearch/data
#配置es可以被远程的任何机器访问 --可根据实际业务需求进行设定
echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml

##配置docker中的es,命令依次的含义如下:
#1.--name表示重命名 9200端口是es接收请求暴露的端口 9300是es在分布式集群下节点间通信的端口
#2.指定现在已单节点模式运行
#3.指定es的初始和最大的占用内存 --此处根据业务实际情况设定,此处最大内存设置过小可能导致es启动失败
#4.配置文件挂载  挂载后在docker外面修改相应的文件,与之挂载的docker内部文件会相应修改
#5.数据文件挂载
#6.插件挂载
#7.后台启动
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx1024m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.0

#然后将本机关于es的文件权限改为777
chmod -R 777 /mydata/elasticsearch

##设置开机自启动
docker update elasticsearch --restart=always
docker update kibana --restart=always

测试

访问主机地址加9200端口即可验证是否安装成功,成功返回数据如下

{
  "name" : "658a9cab8bd9",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "JvncwlDnR66lGj97fNwlRg",
  "version" : {
    "number" : "7.12.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a",
    "build_date" : "2021-03-18T06:17:15.410153305Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

运行kibana

#此处http://192.168.56.10:9200为es的IP地址
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \
-d kibana:7.12.0

测试:浏览器访问http://192.168.56.10:5601/即可进入es可视化页面。

安装ik分词器

  1. ik分词器的下载地址为:https://github.com/medcl/elasticsearch-analysis-ik/releases

  2. 选择相对应的版本下载

  3. 解压到/mydata/elasticsearch/plugins目录下即可安装成功

  4. 测试:重启es后在kibana的Dev Tools下输入使用post请求:

    POST _analyze
    {
      "analyzer": "ik_max_word",
      "text": "我是干饭人"
    }
    
    //返回的结果如下:
    {
      "tokens" : [
        {
          "token" : "我",
          "start_offset" : 0,
          "end_offset" : 1,
          "type" : "CN_CHAR",
          "position" : 0
        },
        {
          "token" : "是",
          "start_offset" : 1,
          "end_offset" : 2,
          "type" : "CN_CHAR",
          "position" : 1
        },
        {
          "token" : "干饭",
          "start_offset" : 2,
          "end_offset" : 4,
          "type" : "CN_WORD",
          "position" : 2
        },
        {
          "token" : "人",
          "start_offset" : 4,
          "end_offset" : 5,
          "type" : "CN_CHAR",
          "position" : 3
        }
      ]
    }
    
    

注意:安装ik分词器会占用大量的内存空间,因此上面设置的ES占用的最大内存空间一定要设置的足够大,否则会导致重启失败。

自定义分词

对于一些自定义的词汇ik无法识别,可以通过编写扩展词库达到分词的目的,如上面的“干饭人”就无法分词,下面我们采用nginx返回扩展词库的方式配置扩展词。

安装nginx

##1.随便启动一个nginx实例,只是为了复制出配置
docker run -p 80:80 --name nginx -d nginx:1.10
##2.将容器内的配置文件拷贝到当前目录 注意后面的点
docker container cp nginx:/etc/nginx .
##3.修改文件名称
cp nginx conf
##4.把这个conf移动到/mydata/nginx下
mv conf /mydata/nginx
##5.终止原容器并伤处
docker stop nginx
docker rm nginx
##6.创建新的nginx,执行以下命令
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

编写扩展词库

##在nginx下的html中新建es文件夹,并新建fenci.txt扩展词库
cd /mydata/nginx/html
mkdir es
vi fenci.txt  ##写入分词:干饭人

ik配置该分词

##进入ik的配置文件
cd /mydata/elasticsearch/plugins/ik/config
vi IKAnalyzer.cfg.xml

//打开后的文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict"></entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!--修改此处-->
        <entry key="remote_ext_dict">http://192.168.56.10/es/fenci.txt</entry>
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

重启ES测试“我是干饭人”结果如下

{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "干饭人",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "干饭",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "人",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 4
    }
  ]
}
posted @ 2021-04-04 17:43  bGpi  阅读(472)  评论(0)    收藏  举报