安装elasticsearch

1.部署单点es

1.1.创建网络

因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:

docker network create es-net

1.2.加载镜像

拉取7.17.6版本elasticsearch

docker pull elasticsearch:7.17.6

1.3.运行

运行docker命令,部署单点es:

docker run -d \--name es \--network es-net \-e "discovery.type=single-node" \-e "ingest.geoip.downloader.enabled=false" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.17.6

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -e "ingest.geoip.downloader.enabled=false": 因为ES默认会去官网下载最新的GEO信息,公司内网server一般和外网不通或者网速慢,可能会报错,所以将它设置为false
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置
  • -p 9300:9300:es与其他容器互联的端口(可不加)

在浏览器中输入:http://192.168.116.128:9200/ (虚拟机地址) 即可看到elasticsearch的响应结果:

如果部署时日志报错vm.max_map_count [65530] is too low

 bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

将最大内存映射区域数大小设置为262144

sysctl -w vm.max_map_count=262144

查看结果:

sysctl -a|grep vm.max_map_count

上述方法修改之后,如果重启虚拟机将失效,解决办法:
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
即可永久修改

2.部署kibana

kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。

2.1.部署

拉取和elasticsearch相同版本的kibana

docker pull kibana:7.17.6

运行docker命令,部署kibana

docker run -d \--name kibana \-e ELASTICSEARCH_URL=http://es:9200 \--network=es-net \-v kibana-config:/usr/share/kibana/config \-p 5601:5601  \
kibana:7.17.6
  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_URL=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,可以通过命令:

docker logs -f kibana

启动过程中如果报下面这个异常

{"type":"log","@timestamp":"2022-09-24T10:01:57+00:00","tags":["error","elasticsearch-service"],"pid":6,"message":"Unable to retrieve version information from Elasticsearch nodes. getaddrinfo ENOTFOUND elasticsearch"}

则修改数据卷中kibana-config的kibana.yml文件

改为

elasticsearch.hosts: [ "http://es:9200" ]

启动成功,在浏览器输入地址访问:http://192.168.116.128:5601/ (虚拟机地址),即可看到结果

2.2.DevTools

kibana中提供了一个DevTools界面:

这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

3.安装IK分词器

使用es标准分词器(默认分词器)

POST /_analyze
{"analyzer": "standard","text": "666学习elasticsearch太棒了!"
}

显示结果

{"tokens" : [{"token" : "666","start_offset" : 0,"end_offset" : 3,"type" : "<NUM>","position" : 0},{"token" : "学","start_offset" : 3,"end_offset" : 4,"type" : "<IDEOGRAPHIC>","position" : 1},{"token" : "习","start_offset" : 4,"end_offset" : 5,"type" : "<IDEOGRAPHIC>","position" : 2},{"token" : "elasticsearch","start_offset" : 5,"end_offset" : 18,"type" : "<ALPHANUM>","position" : 3},{"token" : "太","start_offset" : 18,"end_offset" : 19,"type" : "<IDEOGRAPHIC>","position" : 4},{"token" : "棒","start_offset" : 19,"end_offset" : 20,"type" : "<IDEOGRAPHIC>","position" : 5},{"token" : "了","start_offset" : 20,"end_offset" : 21,"type" : "<IDEOGRAPHIC>","position" : 6}]
}

es标准分词器分词中文将会逐字分词(不推荐)

3.1.安装ik插件

地址:https://github.com/medcl/elasticsearch-analysis-ik

# 进入容器内部
docker exec -it es /bin/bash# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.6/elasticsearch-analysis-ik-7.17.6.zip#退出
exit#重启容器
docker restart es
# 查看es日志
docker logs -f es

测试:

IK分词器包含两种模式:

  • ik_smart:最少切分
POST /_analyze
{"analyzer": "ik_smart","text": "666学习elasticsearch太棒了!"
}

结果:

{"tokens" : [{"token" : "666","start_offset" : 0,"end_offset" : 3,"type" : "ARABIC","position" : 0},{"token" : "学习","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 1},{"token" : "elasticsearch","start_offset" : 5,"end_offset" : 18,"type" : "ENGLISH","position" : 2},{"token" : "太棒了","start_offset" : 18,"end_offset" : 21,"type" : "CN_WORD","position" : 3}]
}
  • ik_max_word:最细切分
POST /_analyze
{"analyzer": "ik_max_word","text": "666学习elasticsearch太棒了!"
}

结果:

{"tokens" : [{"token" : "666","start_offset" : 0,"end_offset" : 3,"type" : "ARABIC","position" : 0},{"token" : "学习","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 1},{"token" : "elasticsearch","start_offset" : 5,"end_offset" : 18,"type" : "ENGLISH","position" : 2},{"token" : "太棒了","start_offset" : 18,"end_offset" : 21,"type" : "CN_WORD","position" : 3},{"token" : "太棒","start_offset" : 18,"end_offset" : 20,"type" : "CN_WORD","position" : 4},{"token" : "了","start_offset" : 20,"end_offset" : 21,"type" : "CN_CHAR","position" : 5}]
}

3.3 扩展词词典和停用词词典

随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“摆烂”,“奥利给” 等。

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。

IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。

所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

1)打开IK分词器config目录:
查看es的挂载目录

docker volume inspect es-plugins

打开对应目录,找到config。


通过elasticsearch-plugin 在线安装的可能没有config目录,可以去ik的Github上下载对应版本
https://github.com/medcl/elasticsearch-analysis-ik/releases

然后把config目录复制过去

这种方式可能会不生效,启动过程中也会报错信息,
不生效的可以试试删除并重新创建es容器,挂载和配置文件保持不动

2)在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">ext.dic</entry><!--用户可以在这里配置自己的扩展停止词字典  *** 添加停用词词典--><entry key="ext_stopwords">stopword.dic</entry>
</properties>

3)新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改

摆烂
奥力给
哈撒给

注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑

4)在 stopword.dic 添加停用词

的
呢
呀
啊

注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑

5)重启elasticsearch

docker restart es

6)测试效果:

POST /_analyze
{"analyzer": "ik_smart","text": "拒绝摆烂,人生逐梦正当时,奥力给的呀啊哈撒给"
}

测试结果

{"tokens" : [{"token" : "拒绝","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "摆烂","start_offset" : 2,"end_offset" : 4,"type" : "CN_WORD","position" : 1},{"token" : "人生","start_offset" : 5,"end_offset" : 7,"type" : "CN_WORD","position" : 2},{"token" : "逐","start_offset" : 7,"end_offset" : 8,"type" : "CN_CHAR","position" : 3},{"token" : "梦","start_offset" : 8,"end_offset" : 9,"type" : "CN_CHAR","position" : 4},{"token" : "正当时","start_offset" : 9,"end_offset" : 12,"type" : "CN_WORD","position" : 5},{"token" : "奥力给","start_offset" : 13,"end_offset" : 16,"type" : "CN_WORD","position" : 6},{"token" : "哈撒给","start_offset" : 19,"end_offset" : 22,"type" : "CN_WORD","position" : 7}]
}

4.部署es集群

部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间

首先编写一个docker-compose文件,内容如下:

version: '2.2'
services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastices02:image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data02:/usr/share/elasticsearch/datanetworks:- elastices03:image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data03:/usr/share/elasticsearch/datanetworks:- elasticvolumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridge

Run docker-compose to bring up the cluster:

docker-compose up

安装elasticsearch相关推荐

  1. 2021年大数据ELK(六):安装Elasticsearch

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装Elasticsearch 一.创建普通用户 二.为普通用户 ...

  2. CentOS安装ElasticSearch及其问题解决

    2019独角兽企业重金招聘Python工程师标准>>> 本文记录一次在CentOS上安装ElasticSearch的过程,其中也包含了安装过程中遇到的错误以及相应的解决方法. Ela ...

  3. linux 查看es安装目录,Linux安装Elasticsearch

    本文介绍Linux环境如何安装Elasticsearch. 本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,elasticsearch-5.4.2. 1 安装JDK 网上教程很多,也可 ...

  4. docker安装elasticsearch和kibana

    docker安装elasticsearch 下载镜像文件 docker pull elasticsearch:7.4.2 创建挂载目录文件夹 配置elasticsearch.yml可以允许远程访问 m ...

  5. Linux安装Elasticsearch+Kibana(7.10.2)

    文章目录 1. 安装Elasticsearch 1.1 下载ES 1.2 修改配置 1.3 创建es用户 1.4 启动 1.5 警告问题处理 2. 安装Kibana 2.1 下载 2.2 修改Kiba ...

  6. docker安装Elasticsearch

    什么是Elasticsearch? Elasticsearch是一个实时分布式搜索和分析引擎.它让你以前所未有的速度处理大数据成为可能. 它用于全文搜索.结构化搜索.分析以及将这三者混合使用: 维基百 ...

  7. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  8. windows环境下安装elasticsearch

    转:https://www.cnblogs.com/ljhdo/p/4887557.html 一.JAVA环境配置 ElasticSearch是基于lucence开发的,也就是运行需要java jdk ...

  9. ElasticSearch入门 :Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  10. docker安装elasticsearch_Docker 安装 ElasticSearch

    一.什么是 Elastic Stack Elastic Stack 如果你没有听过,那么 ELK 一定听过.ELK 是三款软件的简称,分别是 Elasticsearch.Logstash.Kibana ...

最新文章

  1. Ubuntu 搭建 Zerotier One MOON 根目录服务器
  2. ignite服务中的bean注入为空
  3. Python3NumPy的常用函数
  4. CRM Transaction处理中的权限控制
  5. JAVA之编译期和运行期区别
  6. ubuntu安装python3.8_在Ubuntu 18.04系统上安装Python 3.8的两种方法
  7. Codeblocks下载安装
  8. FastReport 安装方法
  9. DAP -Link 仿真下载 STM32 教程
  10. 综合项目之闪讯破解(四)之 如何用C++编写可被C#调用的Dll
  11. day 18 tupian
  12. word插入脚注后最后一页多了一个分页符(下一页),导致最后多了一个空白页,删除不掉。
  13. 【FusionCompute】基于FreeNAS部署并使用虚拟存储(五)
  14. 达威尔液晶电子手写板儿童涂鸦画板写字板,培养小孩创造力和想象力的好工具!
  15. 海南楼市充斥着传说 投机者必将自食其果
  16. NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗
  17. 部分主元法求解线性方程组
  18. react 逆地理 高德地图_react中使用高德地图的原生API
  19. Google Earth Engine学习笔记(一)
  20. 删除Windows服务

热门文章

  1. Python实现最速下降法(The steepest descent method)详细案例
  2. HDFS文件的读写操作理论解析
  3. 2015年09月23日
  4. 游戏计算机的显示器,电竞显示器一般多大尺寸?玩游戏电脑显示器多大合适?...
  5. 高仿网易云音乐一(可扫描本地音乐播放)
  6. 软件测试和软件开发哪个发展更好
  7. RK312x机顶盒Android4.4系统编译
  8. 微信头像存储mysql数据库
  9. WARNING: Ignoring invalid distribution -ip 解决方案
  10. iOS 打电话、发短信、写邮件、打开常用软件的几种方式