docker安装elasticsearch+kibana

 docker 安装ElasticSearch、Kibana,并且汉化kibana,在elasticsearch容器中安装ik中文分词器

-------elasticsearch-----------

elasticsearch:搜索引擎,常用语海量查询;
kibana:它是elasticsearch的可视化界面

1.下载镜像文件

docker pull elasticsearch:7.6.2  //存储和检索数据

docker pull kibana:7.6.2         //可视化检索数据

2.创建elasticsearch的宿主机挂载目录,用于挂载redis的数据以及配置文件

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
mkdir -p /mydata/elasticsearch/plugins
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

3.创建容器并启动

//--name为容器起名,-p暴露两个端口,9200以后发送http请求使用,
//9300分布式集群状态下,节点之间的通信端口
//-e "discovery.type=single-node" 单节点运行
//-e ES_JAVA_OPTS="-Xms64m -Xmx128m" 指定es初始占用64m,最大占用128m

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 
-e "discovery.type=single-node" 
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" 
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/elasticsearch.yml 
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data 
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins 
-d elasticsearch:7.6.2

4.连接测试,端口号9200,如果有防火墙或者安全组记得放开端口号

-----发现不能连接,查看logs日志

docker logs elasticsearch    //查看日志

 AccessDeniedException,拒绝访问
原因:elasticsearch容器中的data文件挂载至宿主机外边,由于用户权限的原因导致访问禁止,授予文件夹权限即可

rwx:root用户可读可写可执行,但其他用户只有读和执行的权限,故我们应该讲文件夹的权限均变为rwx
使用:chmod -R 777 /mydata/elasticsearch/ //将所有人权限均变为rwx

 重新启动docker容器,在连接测试,正常

5.安装ik中文分词器插件

首先下载ik分词器,可以根据自己需要的版本:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2  

 进入到elasticsearch容器plugins文件夹挂载的宿主机目录,我的是,/mydata/elasticsearch/plugins

将ik分词器上传到文件夹下进行解压

因为下载的是zip压缩包,通过unzip 压缩包,解压就可以了,然后删除压缩包,重新启动elasticsearch,测试即可

  --------------------------end---------------------------------

-------------------kibana-------------------

1.安装kibana,创建容器并启动

// -e ELASTICSEARCH_HOSTS=http://ip:9200 映射的elasticsearch的访问url

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://ip:9200 -p 5601:5601 -d kibana:7.6.2 

2.访问测试, 成功!

3.汉化kibana

  ①进入运行的kibana容器中

docker exec -it kibana bash

  ②修改kibana配置文件

vi config/kibana.yml
// 在配置文件最后一行加上
i18n_locale: "zh-CN"     //注意中间有空格

  ③退出容器,重启kibana,成功!

------------end---------------

方式二:

编辑kibana.yml配置文件

kibana.yml配置文件放在宿主机/mydata/kibana/config目录下,内容如下:

elasticsearch.hosts 地址是es的地址

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://1ocalhost:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

运行 Kibana

docker run -d --restart=always 
--log-driver json-file 
--log-opt max-size=100m 
--log-opt max-file=2 --name kibana 
-e "I18N_LOCALE=zh-CN" 
-e "ELASTICSEARCH_HOSTS=http://localhost:9200" 
-p 5601:5601 
-v /mydata/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml 
kibana:7.6.2
  • -d 不打印日志启动 去掉 -d 会打印日志
  • -e 汉化启动 && 指定es访问ip
  • -p 指定端口号
  • -v 挂在文件启动

kibana脚本,操作es

# 创建索引
PUT goods_index
# 查询索引
GET goods_index
# 删除索引
DELETE goods_index

# 添加映射
PUT goods_index/_mapping
{
  "properties":{
    "age":{
      "type":"integer"
    },
    "name":{
      "type":"keyword"
    },
    "desc":{
      "type":"text"
    }
  }
}

# 创建索引并且添加映射
PUT goods_index1
{
  "mappings": {
    "properties": {
       "age":{
      "type":"integer"
      },
      "name":{
        "type":"keyword"
      },
      "desc":{
        "type":"text"
      }
    }
  }
}

# 添加文档,指定id
PUT goods_index/_doc/1
{
  "name":"张三",
  "age":34,
  "desc":"北京人深圳来"
}

# 添加文档,不指定id
POST goods_index/_doc
{
  "name":"李四",
  "age":25,
  "desc":"四川妹子真辣"
}
# 修改文档
PUT goods_index/_doc/1
{
  "name":"张三1111",
  "age":34,
  "desc":"北京人深圳来"
}

# 删除文档
DELETE goods_index/_doc/1

# 查询文档 指定id
GET goods_index/_doc/OuR3y3wB4XY5Ck55qC97
# 查询所有文档
GET goods_index/_doc/_search
# ik分词器,ik_smart粗粒度
GET _analyze
{
  "analyzer": "ik_smart",
  "text": "我爱你亲爱的菇凉"
}

# ik分词器,ik_max_word细粒度
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "我爱你亲爱的菇凉"
}
# 查询文档,默认使用的是standard分词器,应当在创建映射时,指定分词器
GET goods_index/_search
{
  "query": {
    "term": {
      "desc": {
        "value": "北"
      }
    }
  }
}

# 创建索引并且添加映射
PUT goods_index1
{
  "mappings": {
    "properties": {
       "age":{
      "type":"integer"
      },
      "name":{
        "type":"keyword"
      },
      "address":{
        "type":"text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

 

 

原文地址:https://www.cnblogs.com/ljl5921/p/15423562.html