elasticsearch概述
elasticsearch是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎,它不仅仅可以进行全文搜索,还可以进行以下工作
- 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
- 实时分析的分布式搜索引擎
- 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
elasticsearch基本概念
elasticsearch是面向文档型数据库,一条数据在这里就是一个文档
- 索引(Index)索引是具有相似特性的文档集合,例如:可以为客户数据提供索引,为产品目录建立另一个索引,以及为订单数据建立另一个索引。索引由名称(必须全部为小写)标识
- 文档:是一个存储索引中的JSON文档,每个文档都有一个类型和对应的ID,这是唯一的
- 字段:文档内的一个基本单位,键值对形式
- 类型:类型是index下的一个逻辑分类,比如weather这个index里,可以按照城市分组,也可以按照气候类型分组,这种分组叫做类型
- 映射:映射用于映射文档的每个field及其对应的数据类型,例如字符串,整数,浮点数,双精度数,日期等
- 分片:单台机器无法纯属大量数据,es可以将一个索引中的数据分片为多个shard,分布在多台服务器上存储,有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作 分布到多台服务器上去执行
- 分词:把一段文本中的词按一定的
elasticsearch选举
脑裂
因为网络或者其他故障,导致一个集群被划分成了两伙或者多方势力,这些群伙都有多个node以及master,那么原来的集群就出现了多个master,master主宰了集群状态的维护以及shard的分配,因此如果有多个master,可能会导致数据被破坏
容错机制
状态 | 意义 |
green | 所有主分片和从分片都可用 |
yellow | 所有主分片可用,但存在不可用的主节点 |
red | 存在不可用的主分片 |
宕机瞬间
master node宕机的一瞬间,该节点的primary shard(主分片)就没有了,此时状态就不是active status,那么集群中就不是所有的主分片都是active status,那么集群中就不是所有的主分片都是active的了
容错步骤一
master选举,es自动选举一个node成为master,承担起master的责任
容错步骤二
新maser将丢失掉的主分片的某个复制分片提升为主分片,此时cluster status会变成yellow,因为所有的主分片都变成active status了,但少一个复制分片
容错步骤三
重启node,新master会将缺失的副本都copy一份到该节点,而且该节点会使用之前已有的分片数据,只是同步一下宕机的修改,cluster status变为green
elasticsearch安装部署
第一台 | 第二台 | 第三台 | |
IP地址 | 192.168.1.11 | 192.168.1.22 | 192.168.1.33 |
三台服务器同样操作!!!
安装JAVA环境
- 首先需要下载JDK安装包,并解压到当前目录下
[root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java
- 设置环境变量
[root@localhost ~]# vim /etc/profile
在末尾添加
JAVA_HOME=/usr/local/java
JRE_HOME=/usr/local/java/jre
CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
PATH=$PATH:JAVA_HOME/bin:JRE_HOME/bin
使环境变量生效
[root@localhost ~]# source /etc/profile
添加软连接
[root@localhost ~]# rm -f /usr/bin/java
[root@localhost ~]# ln -s /usr/local/jdk1.8.0_171/bin/java /usr/bin/
检测java版本
[root@localhost ~]# java -version
创建用户和组
[root@localhost ~]# groupadd es
[root@localhost ~]# useradd es -g es
[root@localhost ~]# mkdir -p /es/{data,logs}
[root@localhost ~]# chown -R es:es /es/
修改系统描述符(软限制、硬限制)
[root@localhost ~]# echo "* soft nofile 819200" >> /etc/security/limits.conf
[root@localhost ~]# echo "* hard nofile 819200" >> /etc/security/limits.conf
修改最大打开的文件数(软限制、硬限制)
[root@localhost ~]# echo "* soft nproc 2048" >> /etc/security/limits.conf
[root@localhost ~]# echo "* hard nproc 4096" >> /etc/security/limits.conf
修改最大锁定内存地址空间(软限制、硬限制)
[root@localhost ~]# echo "* soft memlock unlimited" >> /etc/security/limits.conf
[root@localhost ~]# echo "* hard memlock unlimited" >> /etc/security/limits.conf
jvm能开启的最大线程数
[root@localhost ~]# echo "vm.max_map_count=655360" >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
vm.max_map_count = 655360
修改hosts文件
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.11 es1
192.168.1.22 es2
192.168.1.33 es3
安装elasticsearch
[root@localhost ~]# tar -zxf elasticsearch-6.3.2.tar.gz
[root@localhost ~]# mv elasticsearch-6.3.2 /usr/local/es
[root@localhost ~]# chown -R es:es /usr/local/es/
修改es配置文件
[root@localhost ~]# vim /usr/local/es/config/elasticsearch.yml
[root@localhost ~]# scp /usr/local/es/config/elasticsearch.yml es2:/usr/local/es/config/elasticsearch.yml
[root@localhost ~]# scp /usr/local/es/config/elasticsearch.yml es3:/usr/local/es/config/elasticsearch.yml
切换到es2、es3里面只用修改配置文件里面的节点名称和节点IP为自己的
重启服务器
[root@localhost ~]# reboot
切换到es用户,然后启动es服务
[root@localhost ~]# su es
[es@localhost root]$ /usr/local/es/bin/elasticsearch
检查es集群状态(等待变绿... :huaji: )
[root@es1 ~]# curl -XGET http://192.168.1.11:9200/_cluster/health?pretty
{
"cluster_name" : "shuai",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
安装分词器插件
分词插件在一台安装即可!
[root@es1 ~]# mkdir /usr/local/es/plugins/ik
[root@es1 ~]# unzip elasticsearch-analysis-ik-6.3.2.zip -d /usr/local/es/plugins/ik/
重启es
[root@localhost ~]# su es
[es@localhost root]$ /usr/local/es/bin/elasticsearch
检查es集群状态
[root@es1 ~]# curl -XGET http://192.168.1.11:9200/_cluster/health?pretty
{
"cluster_name" : "shuai",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
# 查询主节点
[root@es1 ~]# curl -XGET http://192.168.1.11:9200/_cat/master
XkhzL00VSLyEPMO6kuzdmQ 192.168.1.11 192.168.1.11 es1
# 查询所有节点
[root@es1 ~]# curl -XGET http://192.168.1.11:9200/_cat/nodes
192.168.1.22 33 61 0 0.01 0.07 0.08 mdi - es2
192.168.1.11 34 64 0 0.07 0.09 0.08 mdi * es1
192.168.1.33 33 60 0 0.00 0.09 0.10 mdi - es3
创建索引
[root@es1 ~]# curl -XPUT http://192.168.1.11:9200/shuaiguoer
{"acknowledged":true,"shards_acknowledged":true,"index":"shuaiguoer"}
插入数据
[root@es1 ~]# curl -XPUT http://192.168.1.11:9200/shuaiguoer/fulltext/1?pretty -H 'Content-Type: application/json' -d '{ "name" : "shuai" }'
{
"_index" : "shuaiguoer",
"_type" : "fulltext",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
安装node
[root@es1 ~]# tar -zxvf node-v10.6.0-linux-x64.tar.gz
[root@es1 ~]# mv node-v10.6.0-linux-x64 /usr/local/node
[root@es1 ~]# vim /etc/profile
# 在最后添加加
NODE_HOME=/usr/local/node
PATH=$PATH:$NODE_HOME/bin
[root@es1 ~]# source /etc/profile
[root@es1 ~]# node -v
安装head
[root@es1 ~]# unzip elasticsearch-head-master.zip
[root@es1 ~]# mv elasticsearch-head-master /usr/local/head
[root@es1 ~]# cd /usr/local/head/
[root@es1 head]# npm install -g grunt --registry=https://registry.npm.taobao.org
[root@es1 head]# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@es1 head]# cnpm install
修改head配置文件
[root@es1 head]# vim Gruntfile.js
修改es配置文件
[root@es3 head]# vim /usr/local/es/config/elasticsearch.yml
[root@es1 head]# grunt server
20 comments
加了 :hehe:
成功了吗? :yi:
不要点我
你qq多少
1803592721 :mianqiang:
啊嘞我发的怎么不动
因为你根本没有引用,你所导入的js和css呀
不要点我
我可能废了吧教程都写了我还不会 :daku:
只需要加入 high.js 和 jitter.css,然后在 high.js 中引入 high.css 和 你喜欢的音乐.mp4,再然后就是把带有 不要点我 的这段代码,放在你网站想要显示的地方就可以了! :hu:
是要先把js和css引用代码方在网站上
然后不要点我那个直接复制随便放在哪里的意思吗
对的,对的。就是这个意思
不要点我
上一条邮箱写错了
我就是不知道
不要点我这个怎么用
Class=里要填写什么啊还有后面的oncick=
class="jitter" onclick="hig()
这个就像下面这样写的呀 :yi:
不要点我
不要点我
还是不知道怎么用 :jiku:
不要点我是在里面跳js引用代码吗? :yiwen:
对的 :tushe:
一段js、css外部引用,一段css内部调用
博主我想知道那个不要点我怎么弄? :weiqu:
你可以看这篇文章哦,写的很详细了 :mianqiang:
https://wqinf.com/archives/418