Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
基本概念:
节点 Node、集群 Cluster 和分片 Shards:
ElasticSearch 是分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个实例。单个实例称为一个节点(node),一组节点构成一个集群(cluster)。分片是底层的工作单元,文档保存在分片内,分片又被分配到集群内的各个节点里,每个分片仅保存全部数据的一部分。
索引 Index、类型 Type 和文档 Document:
- index索引
动词:相当于mysql的insert
名词:相当于mysql的db
- Type类型
Elasticsearch 7.x,不建议在请求中指定类型
Elasticsearch 8.x,不再支持在请求中指定类型
在index中,可以定义一个或多个类型
类似于mysql的table,每一种类型的数据放在一起
- Document文档
保存在某个index下,某种type的一个数据document,文档是json格式的,document就像是mysql中的某个table里面的内容。每一行对应的列叫属性
安装elastic search(docker)
1,下载ealastic search
docker pull elasticsearch:7.4.2
2,配置
# 将docker里的目录挂载到linux的/mydata目录中
# 修改/mydata就可以改掉docker里的
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
# es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
# 递归更改权限,es需要访问
chmod -R 777 /mydata/elasticsearch/
3,启动Elastic search
不能用root用户去启动elasticsearch
# 9200是用户交互端口 9300是集群心跳端口
# -e指定是以单节点运行
# -e指定占用的内存大小,生产时可以设置32G
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
# 设置开机启动elasticsearch
docker update elasticsearch --restart=always
4,测试
访问http://你的ip地址:9200,出现下图内容则为启动成功
安装Kibana(docker)
1,下载kibana(可视化检索)
elasticsearch和kibana的版本要一样
docker pull kibana:7.4.2
2,启动kibana
# kibana指定了了ES交互端口9200 # 5600为kibana主页端口
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2
# 设置开机启动kibana
docker update kibana --restart=always