Elasticsearch:存储,搜索和分析
Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎。Logstash和Beats有助于收集,聚合和丰富您的数据并将其存储在Elasticsearch中。使用Kibana,您可以交互式地探索,可视化和共享对数据的见解,并管理和监视堆栈。Elasticsearch是发生索引,搜索和分析魔术的地方。
Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。
支持的数据类型有:
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
官方链接:https://www.elastic.co/cn/support/matrix#matrix_jvm
二进制压缩包可以解压后直接使用无需编译
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
总结几点:
5.x 版本和更高的版本都可以使用 JDK 1.8
JDK 的版本不是越高越好,大部分都不支持 JDK 9 和 10
从6.5 版本开始支持 JDK11
解压到指定的安装目录即可完成安装
这里是安装到系统的 /usr/local/
目录下
tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/
运行 Elasticsearch 要求使用非 root 用户,所以需要建立一个普通的用户来运行 Elasticsearch.
useradd elastic
运行期间可以会对安装目录下的日志文件进行写操作,所以需要修改安装主目录是属于 elastic 用户的
root 用户执行如下操作
chown -R elastic.elastic /usr/local/elasticsearch-7.10.0
之后切换用户并启动
cd /usr/local/elasticsearch-7.10.0
./bin/elasticsearch
这会运行于前台
以后台方式运行可以使用 -d
参数
./bin/elasticsearch -d
[root@prod ~]# curl http://localhost:9200/
{
"name" : "prod",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "nYkwCL9YQEinaJk2dstK0w",
"version" : {
"number" : "7.10.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
"build_date" : "2020-11-09T21:30:33.964949Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
恭喜你!到目前为止,你已经成功了运行了一个节点的 Elasticsearch。
注意: 这里只是启动了一个节点,Elasticsearch 本身是支持集群的,集群至少三个节点。后面章节如何启动一个集群。
默认端口号是 :
9200
用于外部访问的监听端口,比如查看集群状态,向其传输数据,查询数据等9300
用户集群中节点之间的互相通信,比如主节点的选举,集群节点信息的通告等。查看端口的命令如下:
ss -ntal
Centos5及以下不支持这种方式
Elasticsearch包含 来自JDK维护者(GPLv2 + CE)的OpenJDK捆绑版。
所以不需要额外部署 JDK 环境即可。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
首先在 /etc/yum.repos.d/
目录下创建一个文件 elasticsearch.repo
,并写入如下内容:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
之后可以使用如下命令安装
yum install --enablerepo=elasticsearch elasticsearch
默认情况下,已配置的存储库是禁用的。这样就消除了elasticsearch在升级系统其余部分时意外升级的可能性。每个安装或升级命令必须显式启用存储库,如上面的示例命令所示。
下面的 Docker Compose 文件示例 创建了一个三节点的Elasticsearch集群。节点es01上监听宿主机的 9200
端口,并es02和es03交谈es01过泊坞网络。
请注意,此配置在所有网络接口上公开端口9200,并且鉴于Docker iptables在Linux上的操作方式,这意味着您的Elasticsearch集群是可公开访问的,可能会忽略任何防火墙设置。如果您不想公开端口9200,而是使用反向代理,请在docker-compose.yml文件中替换9200:9200为127.0.0.1:9200:9200。然后,只能从主机本身访问Elasticsearch。
确保为Docker Engine分配了至少4GiB的内存。
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es01
environment:
- 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: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es02
environment:
- 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: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es03
environment:
- 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: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
首先需要设置一下系统内核参数
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
还需要设置关于这个进程可以打开的文件描述符数量
[root@prod ~]# tail /etc/security/limits.conf
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
进入含有 docker-compose.yml
文件的目录,之后执行如下命令启动集群
docker-compose up -d
默认情况下,Elasticsearch 在 Docker 容器中是使用用户
elasticsearch
运行的,并且对应的uid:pid
为1000:0
。
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
容器内的 /usr/share/elasticsearch/config/
目录用于存放配置文件,可以把自定义的配置文件挂载到此目录下实现。
当然,您可以使用Docker环境变量来设置各个Elasticsearch配置参数。