ElasticSearch介绍:
分布式的搜索和分析引擎,简称ES (基于Lucene,JAVA开发的)
7.10前开源、7.11后对商业有使用限制
概念:
- 一个ES集群由若干个节点(Node)组成
- ES中的数据存放于节点上
- 数据以文档(Document)形式存放,文档即JSON对象
- ES索引(Index)存放一组相关的文档
1. 索引(Index)
由文档组成,文档为Json对象,对象的每个字段可进行分词
2. 节点(Node)
包括数据节点、协同节点等,也可当成一个ES实例
3. 分片 (Sharding)
-
大索引拆为各个节点上的Sharding
-
类型:Primary Sharding 和 Replication Sharding
-
同一索引的Primary 和 Replication不能在一个Node上, Replication保证了高可用,也可以提升查询性能
-
Sharding本质上是一个Luence实例
-
⼀个Shard最多可存放20亿个⽂档
通过Kibana查看Shard,"?v"表示展示详情
GET /_cat/indices?v
Sharding主要作用:
- 支持数据量的水平扩展
- 将索引分散在各个节点上,并行查询,提高查询性能
Sharding配置:
- ⼀个Index缺省配置⼀个Shard(ES 7.x)
- Shards并⾮越多越好,存储开销/管理复杂性
- 增加或减少Shards
- 增加Shards -> Split API
- 减少Shards -> Shrink API
- 配置多少个Shards合适?
- 视情况定,节点数量,每个节点的容量,索引数量/⼤⼩,查询模式
- 预期⼤索引 -> 适当多分配⼀些Shards(⽐⽅说从5个开始)
- 中⼩索引 -> 从1/2个Shards开始
- Replication副本数量:关键数据 >=2个副本, 非关键业务数据如日志1个副本
- 监控+调整
快照
使用docker-compose运行多节点(实验性质,生产需配置更多)
version: "3.7"
services:
es01:
image: "docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2"
container_name: es01
ports:
- "9200:9200"
- "9300:9300"
environment:
node.name: es01
discovery.seed_hosts: es01,es02,es03
cluster.initial_master_nodes: es01,es02,es03
cluster.name: mycluster
ES_JAVA_OPTS: -Xms512m -Xmx512m
volumes:
- "es-data-es01:/usr/share/elasticsearch/data"
ulimits:
memlock:
soft: -1
hard: -1
es02:
image: "docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2"
container_name: es02
ports:
- "9201:9200"
- "9301:9300"
environment:
node.name: es02
discovery.seed_hosts: es01,es02,es03
cluster.initial_master_nodes: es01,es02,es03
cluster.name: mycluster
ES_JAVA_OPTS: -Xms512m -Xmx512m
volumes:
- "es-data-es02:/usr/share/elasticsearch/data"
ulimits:
memlock:
soft: -1
hard: -1
es03:
image: "docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2"
container_name: es03
ports:
- "9202:9200"
- "9302:9300"
environment:
node.name: es03
discovery.seed_hosts: es01,es02,es03
cluster.initial_master_nodes: es01,es02,es03
cluster.name: mycluster
ES_JAVA_OPTS: -Xms512m -Xmx512m
volumes:
- "es-data-es03:/usr/share/elasticsearch/data"
ulimits:
memlock:
soft: -1
hard: -1
kibana:
image: docker.elastic.co/kibana/kibana-oss:7.10.2
container_name: kibana
depends_on:
- es01
- es02
- es03
ports:
- "5601:5601"
- "9600:9600"
environment:
SERVERNAME: kibana
ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]'
ES_JAVA_OPTS: -Xmx512m -Xms512m
volumes:
es-data-es01: {}
es-data-es02: {}
es-data-es03: {}
查看ES集群状态
ES
暴露HTTP RESTful API,可以通过常用工具进行访问:
- Kibana Dev Console
- Postman
- cURL
Kibana Dev Console:
- 最简单的访问ES API的方法
- 对查询结果进行格式化展示
- 自动设置必要的HTTP headers(Content-Type etc)
- 请求自动提示/补全
- 本课主要使用该工具
使用Kibana Dev Console查询集群状态
- 查询集群健康状态
GET /_cluster/health
_cluster
表示APIhealth
表示命令
- 查询节点状态
GET /_cat/nodes?v
cat
表示Compact and aligned text
- 查看索引情况
GET /_cat/indices?v
使用cUrl查询集群状态
curl -X GET http://localhost:9200
curl -X GET http://localhost:9200/_cluster/health
npm install -g json
curl -X GET http://localhost:9200/_cluster/health | json
标签:9200,备忘,ElasticSearch,es01,es02,es03,ES,name
From: https://www.cnblogs.com/kyou/p/18218983