elasticsearch简述及安装

499 阅读4分钟

这是我参与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是一个实时,分布式的搜索和分析引擎,他可以被用在很多业务场景中,但是最擅长的还是对半结构化数据的索引流的处理,例如日志信息及对网络包信息的解码

支持集群的建设

elasticserach官网

Get start

参考文档

存储不是最大的特点,快速查找才是特点(倒排索引

es具有哪些特性

  • 分布式搜索引擎
  • 快速、稳定
  • 基于Lucene
  • 基于RestFul 的接口
  • Java开发的开源软件
  • 集群建设

es的历史

Shay Banon于2004年创建了Compass是es的前身,也就是实现了分布式及可扩展性的compass高版本

目前被各大企业广泛使用,比如维基百科、github等使用

使用场景

  1. 全文搜索
  2. 多数据源
  3. 读数据库

倒排索引

以关键字作为key,以内容作为value。创建索引

倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。

参考文档1 参考文档2

1. 安装

1.1 window下安装

  1. 准备工作需要有jdk
  2. 下载地址
  3. 解压缩之后就可以直接使用,运行elasticsearch.bat

1.2 使用Docker安装

  1. 下载镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.1
  2. 创建容器docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.4.1

1.3 linux下安装

  1. 运行es不能使用root用户,所以需要先创建用户
    1. adduser ymy
    2. passwd ymy
    3. 输入密码即可
    4. su ymy(切换用户)
  2. 下载压缩包,官网下载
  3. 解压缩
  4. 运行./bin/elasticsearch

查看是否运行成功

  1. curl http://localhost:9200
  2. postman访问
  3. 浏览器访问

一些常见的centos启动错误及解决方案

  1. 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

  1. 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生效

  1. 启动报错信息如下:解决:

vim /etc/elasticsearch/elasticsearch.yml
修改【#cluster.initial_master_nodes: ["node-1", "node-2"] 】 cluster.initial_master_nodes: ["node-1"]

  1. 3.5 正常后访问 curl "http://127.0.0.1:9200" 能够正常访问,可是使用外网ip就提示拒绝链接

解决办法:vim config/elasticsearch.yml
增加:network.host: 0.0.0.0

安装

可以安装在很多平台上,也可以运行在mac及windows中,只是对应的安装程序不同

需要注意的是:

  1. 要求有jdk环境,而且环境必须满足es要求的最低版本环境
  2. 要求有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