elasticsearch

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"

            }

        }


}'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。