这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战
什么是es
es是一款分布式搜索引擎,是一个工具,是个数据库。可以实现快速数据分析,快速的数据查找,快速的数据存储。反正两个字描述,==快速==
es的底层依赖于Lucene,与LogStash、kibana合称ELK,是一种日志记录的技术。同时也是一种数据展示的方式。
Elasticsearch is a real-time, distributed storage, search, and analytics engine. It can be used for many purposes, but one context where it excels is indexing streams of semi-structured data, such as logs or decoded network packets.
es是一个实时,分布式的搜索和分析引擎,他可以被用在很多业务场景中,但是最擅长的还是对半结构化数据的索引流的处理,例如日志信息及对网络包信息的解码
支持集群的建设
存储不是最大的特点,快速查找才是特点(倒排索引)
es具有哪些特性
- 分布式搜索引擎
- 快速、稳定
- 基于Lucene
- 基于RestFul 的接口
- Java开发的开源软件
- 集群建设
es的历史
Shay Banon于2004年创建了Compass是es的前身,也就是实现了分布式及可扩展性的compass高版本
目前被各大企业广泛使用,比如维基百科、github等使用
使用场景
- 全文搜索
- 多数据源
- 读数据库
倒排索引
以关键字作为key,以内容作为value。创建索引
倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。
1. 安装
1.1 window下安装
- 准备工作需要有jdk
- 下载地址
- 解压缩之后就可以直接使用,运行elasticsearch.bat
1.2 使用Docker安装
- 下载镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.1 - 创建容器
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.4.1
1.3 linux下安装
- 运行es不能使用root用户,所以需要先创建用户
- adduser ymy
- passwd ymy
- 输入密码即可
- su ymy(切换用户)
- 下载压缩包,官网下载
- 解压缩
- 运行./bin/elasticsearch
查看是否运行成功
- curl http://localhost:9200
- postman访问
- 浏览器访问
一些常见的centos启动错误及解决方案
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量 修改/etc/security/limits.conf文件,增加配置,用户退出后重新>>登录生效
soft nofile 65536
hard nofile 65536
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vim /etc/sysctl.conf
sysctl -p 执行命令sysctl -p生效
启动报错信息如下:解决:
vim /etc/elasticsearch/elasticsearch.yml
修改【#cluster.initial_master_nodes: ["node-1", "node-2"] 】 cluster.initial_master_nodes: ["node-1"]
3.5 正常后访问 curl "http://127.0.0.1:9200" 能够正常访问,可是使用外网ip就提示拒绝链接
解决办法:vim config/elasticsearch.yml
增加:network.host: 0.0.0.0
安装
可以安装在很多平台上,也可以运行在mac及windows中,只是对应的安装程序不同
需要注意的是:
- 要求有jdk环境,而且环境必须满足es要求的最低版本环境
- 要求有mvn环境
官方提供的安装方式
deb:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-amd64.deb
sudo dpkg -i elasticsearch-7.10.1-amd64.deb
sudo /etc/init.d/elasticsearch start
rpm:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-x86_64.rpm
sudo rpm -i elasticsearch-7.10.1-x86_64.rpm
sudo service elasticsearch start
mac:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-darwin-x86_64.tar.gz
tar -xzvf elasticsearch-7.10.1-darwin-x86_64.tar.gz
cd elasticsearch-7.10.1
./bin/elasticsearch
brew:
brew tap elastic/tap
brew install elastic/tap/elasticsearch-full
elasticsearch
linux:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz
tar -xzvf elasticsearch-7.10.1-linux-x86_64.tar.gz
cd elasticsearch-7.10.1
./bin/elasticsearch
win:
Download the Elasticsearch 7.10.1 Windows zip file from the Elasticsearch download page.
Extract the contents of the zip file to a directory on your computer, for example, C:\Program Files.
Open a command prompt as an Administrator and navigate to the directory that contains the extracted files, for example:
cd C:\Program Files\elasticsearch-7.10.1
Start Elasticsearch:
bin\elasticsearch.bat
验证安装是否成功
curl http://127.0.0.1:9200
或者可以使用本地浏览器查看
http://localhost:9200/
{
"name" : "DESKTOP-UJF63TK",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "l6jWth8NRJOi-p7Y8SsJPw",
"version" : {
"number" : "7.6.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
"build_date" : "2020-02-29T00:15:25.529771Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
运行
./bin/elasticsearch -d
-d 标识使用守护进程的方式运行
docker安装es
下载镜像:docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.2
启动容器:docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.4.2
如果遇到报错
docker: Error response from daemon: driver failed programming external connectivity on endpoint elated_yalow (97ad2075a86d22cd3d1d9a09e3722473fc82cdd1079079181599d019b7a3a613): (dbus: connection closed by user).
重启docker解决:systemctl restart docker
后台守护进程运行:
docker run -itd -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.4.2
docker安装elasticsearch-head
docker pull mobz/elasticsearch-head:5
docker run -itd -p 9100:9100 docker.io/mobz/elasticsearch-head:5