https://www.elastic.co
es默认设置:
5分片
1副本 在其他机器上备份
应用场景:
1.搜索,高亮显示
2.商城搜索
3.日志收集分析展示
集群状态颜色:
绿色:所有条件都满足,数据完整,副本满足
黄色:数据完整,副本不满足
红色:有索引里的数据出现不完整了
紫色:有分片正在同步中
默认自己就是一个集群,默认的集群名称为:elasticsearch
安装注意的内容:
1.锁定内存要修改配置
2.JVM虚拟机最大最小内存设置为一样
3.最大内存不要超过30G
4.更改数据目录需要授权用户给elasticsearch
5.es启动比较慢
数据操作:
增删改查
1.插入数据不需要提前创建好数据库
2.index -- 库
type -- 表
filter -- 字段
3.默认随机生成_ID -- 唯一键ID
交互方式:
1.curl命令
2.es-head插件
3.kibana
ES集群:
1.多台机器
2.处于同一个组里
集群配置文件:
[root@db01 elasticsearch]# grep "^[a-z]" elasticsearch.yml
cluster.name: Linux #集群名称,同一个集群内所有节点集群名称要一模一样
node.name: node-1 #节点名称,同一个集群内所有节点的节点名称不能重复
path.data: /data/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #内存锁定
network.host: 10.0.0.51,127.0.0.1 #绑定监听地址
http.port: 9200 #默认端口号
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"] #集群发现节点配置
discovery.zen.minimum_master_nodes: 2 #选项相关参数,有公式 master/2 +1
新增节点配置步骤:
1.安装软件
rpm -ivh elasticsearch-6.6.0.rpm
2.修改配置文件
[root@db02 elasticsearch]# cat /etc/elasticsearch/elasticsearch.yml
cluster.name: Linux
node.name: node-2
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.52,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
discovery.zen.minimum_master_nodes: 2
3.修改内存锁定
[root@db02 ~]# systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
4.创建数据目录并授权
mkidr /data/elasticsearch
chown =R elasticsearch:elasticsearch /data/elasticsearch
5.重启服务
systemctl daemon-reload
systemctl start elasticsearch
6.查看日志和端口
tail -f /var/log/elasticsearch/Linux.log
netstat -lntup:grep 9200
节点角色:
主节点 :负责调度数据返回数据
工作节点 :负责处理数据
默认情况下:
1.所有节点都是工作节点
2.主节点即负责调度又负责处理数据
操作指令:
curl -XGET 'http://localhost:9200/_nodes/procese?human&pretty'
curl -XGET 'http://localhost:9200/_nodes/_all/info/jvm,process?human&pretty'
curl -XGET 'http://localhost:9200/_cat/nodes?human&pretty'
curl -XGET 'http://localhost:9200/_cluster/health?pretty'
curl -XPUT 'localhost:9200/_cat/indices?pretty'
2个节点,master设置为2的时候,一台出现故障导致集群不可用
解决方案:
把还存活的节点的配置文件集群选举相关的选项注释掉或者改成1
discovery.zen.minimum_master_nodes: 1
重启服务
结论:
两个节点数据不一致会导致查询结果不一致
找出不一致的数据,清空一个节点,以另一个节点的数据为准
然后手动插入修改后的数据
增加第三台节点:
新增节点配置步骤:
1.安装软件
rpm -ivh elasticsearch-6.6.0.rpm
2.修改配置文件
[root@db02 elasticsearch]# cat /etc/elasticsearch/elasticsearch.yml
cluster.name: Linux
node.name: node-3
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.53,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.53"]
discovery.zen.minimum_master_nodes: 2
3.修改内存锁定
[root@db02 ~]# systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
4.创建数据目录并授权
mkdir /data/elasticsearch -p
chown -R elasticsearch:elasticsearch /data/elasticsearch
5.重启服务
systemctl daemon-reload
systemctl start elasticsearch
6.查看日志和端口
tail -f /var/log/elasticsearch/Linux.log
netstat -lntup|grep 9200
curl -XPUT '192.168.47.178:9200/linux/user/1?pretty' -H 'Content-Type: application/json' -d'
{
"first_name" : "John",
"last_name": "Smith",
"age" : 25,
"about" : "I love to go rock climbing", "interests": [ "sports", "music" ]
}
'
curl -XPUT 'localhost:9200/linux/user/2?pretty' -H 'Content-Type: application/json' -d' {
"first_name": "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums", "interests": [ "music" ]
}'
curl –XPUT 'localhost:9200/linux/user/3?pretty' -H 'Content-Type: application/json' -d' {
"first_name": "Douglas", "last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets", "interests": [ "forestry" ]
}'
默认数据分配:
5分片
1副本
监控状态
1.监控集群健康状态 不是 green
or
2.监控集群节点数量 不是 3
极限损坏:
3节点
坏2台节点
默认创建数据:
curl -XPUT 'localhost:9200/index1?pretty'
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "index1"
}
创建索引的时候指定分片和副本
curl -XPUT 'localhost:9200/index2?pretty' -H 'Content-Type: application/json' -d'
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}'
分片数一旦创建就不能再更改了,但是我们可以调整副本数
curl -XPUT 'localhost:9200/index2/_settings?pretty' -H 'Content-Type: application/json' -d'
{
"settings" : {
"number_of_replicas" : 12
}
}'
curl –XPUT 'localhost:9200/linux2/user/3?pretty' -H 'Content-Type: application/json' -d' {
"first_name": "Douglas", "last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets", "interests": [ "forestry" ]
}'
curl -XPUT 'localhost:9200/linux2/user/3?pretty' -H 'Content-Type: application/json' -d' {
"first_name": "Douglas", "last_name" : "ssss",
"age" : 35,
"about": "I like to build cabinets", "interests": [ "forestry" ]
}'
中文分词器:
所有节点都得安装中文分词器
curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://localhost:9200/index/fulltext/2 -H 'Content-Type:application/json' -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://localhost:9200/index/fulltext/3 -H 'Content-Type:application/json' -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://localhost:9200/index/fulltext/4 -H 'Content-Type:application/json' -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
curl -XPOST http://localhost:9200/index/fulltext/_search?pretty -H 'Content-Type:application/json' -d'
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
'
创建索引的时候指定分词器
curl -XPOST http://localhost:9200/index/fulltext/_mapping -H 'Content-Type:application/json' -d'
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}'