欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

elasticstack

时间:2023-06-20
一 什么是搜索引擎

就是根据客户需求,运用一定的算法将数据通过检索的方式呈现给客户 二 倒排索引

将一段文本按照一定的规则,进行分词,拆分成不同的词条然后记录词条和数据的唯一标识(ID)关系。举例
假如我们在jd搜索“手机”关键词,此时我们是客户端,服务端会显示各种品牌手机,其名称各种各样,如华为手机、诺基亚手机、苹果手机等,这个时候服务端就将“xx手机”拆分为词条,服务端将搜索该词条返回给客户端。 三 elasticsearch概念

ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

四 elasticsearch核心概念

索引:es存储数据的地方,可以理解为关系型数据库中的数据库映射:定义了每个字段的类型,可以理解为关系型数据库中的表结构文档:es中的最小数据单元,常以json格式显示,一个文档相当于关系型数据库中的一行数据倒排索引:将一段文本按照一定的规则,进行分词,拆分成不同的词条然后记录词条和数据的唯一标识(ID)关系。类型:一种type相当于一张表
1:es5中一个index可以有多个type。
2:es6中一个index只能由一个type。
3:es7中已经移除了type,默认_doc。 五elasticsearch使用场景

原文连接

https://blog.csdn.net/laoyang360/article/details/52227541

总结:es在整个架构中充当的角色为“搜索引擎”的角色,需要将数据库中的数据实时同步到es中,供给客户端检索。 六 elasticsearch官网

https://www.elastic.co/

七 安装es

版本:elasticsearch-7.4.0es是基于jdk环境,但是es在部署中包含了jdk环境,无需我们再次安装,并且es对应jdk版本环境,推荐使用其包含的jdk版本 1、上传解压

tar xvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C ~/APP

2、修改配置文件

cat << EOF >> /home/finance/APP/elasticsearch-7.4.0/config/elasticsearch.yml#配置elasticsearch集群名称,建议修改成一个有意义的名称。cluster.name: elasticsearch#节点名称,elasticsearch会随机指定一个名称,建议修改成一个有意义的名称,方便管理。node.name: node-1#设置为0.0.0.0允许外网访问。network.host: 0.0.0.0#es的http端口http.port: 9200#初始化集群的时候需要此配置来进行master选举cluster.initial_master_nodes: ["node-1"]#数据目录位置path.data: /home/finance/data/es7#日志路径path.logs: /home/finance/logs/es7EOF

2.1 其他可配置参数 参数说明cluster.name配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。node.name节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理path.conf设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearchpath.data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开path.logs设置日志文件的存储路径,默认是es根目录下的logs文件夹path.plugins设置插件的存放路径,默认是es根目录下的plugins文件夹bootstrap.memory_lock设置为true可以锁住ES使用的内存,避免内存进行swapnetwork.host设置bind_host和publish_host,设置为0.0.0.0允许外网访问http.port设置对外服务的http端口,默认为9200。transport.tcp.port集群结点之间通信端口discovery.zen.ping.timeout设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些discovery.zen.minimum_master_nodes主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为23.优化系统参数

使用root用户

#修改limit最大打开数量cat << EOF >> /etc/security/limits.conf * soft nofile 65536* hard nofile 65536* soft nproc 4096* hard nproc 4096EOF#修改最大虚拟内存大小cat << EOF >> /etc/sysctl.confvm.max_map_count=655360fs.file-max=655360EOF#生效配置sysctl -p

4.优化jvm参数

#将默认的1G改为512,也可根据业务需求更改vim config/jvm.options-Xms512m-Xmx512m

5、配置环境变量并启动

为了安全起见,es不允许root用户启动。

echo 'export PATH=$PATH:/home/finance/APP/elasticsearch-7.4.0/bin' >> /etc/profile.d/elasticsearch.shsource /etc/profile.d/elasticsearch.sh#启动elasticsearch -d#验证,也可使用web页面curl -I localhost:9200

八 es索引相关操作 1.接口请求方式

Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)Trace 回显服务器收到的请求,用于测试和诊断opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能) 2、es常用接口请求

工具为postman

get:查

put:增

post:改

delete:删

2.1 增加索引 2.2 查看索引 2.3 删除索引 2.4 关闭索引 2.5 打开索引 九 es集群分布式架构 1、集群部署 1.1 主机分布 clsuter namenode nameIPPORTelasticsearchnode-1192.168.100.1019200elasticsearchnode-2192.168.100.1029200elasticsearchnode-3192.168.100.10292001.2 配置文件更改

node-1

# 集群名称cluster.name: elasticsearch#节点名称node.name: node-1# 绑定IP地址network.host: 0.0.0.0# 指定服务访问端口http.port: 9200# 指定API端户端调用端口transport.tcp.port: 9300#集群通讯地址discovery.seed_hosts: ["192.168.100.101:9300", "192.168.100.102:9300","192.168.100.103:9300"]#集群初始化能够参选的节点信息cluster.initial_master_nodes: ["192.168.100.101:9300", "192.168.100.102:9300","192.168.100.103:9300"]#开启跨域访问支持,默认为falsehttp.cors.enabled: true##跨域访问允许的域名, 允许所有域名http.cors.allow-origin: "*"#数据目录位置path.data: /home/finance/data/es7#日志路径path.logs: /home/finance/logs/es7

node-2

# 集群名称cluster.name: elasticsearch#节点名称node.name: node-2# 绑定IP地址network.host: 0.0.0.0# 指定服务访问端口http.port: 9200# 指定API端户端调用端口transport.tcp.port: 9300#集群通讯地址discovery.seed_hosts: ["192.168.100.101:9300", "192.168.100.102:9301","192.168.100.103:9302"]#集群初始化能够参选的节点信息cluster.initial_master_nodes: ["192.168.100.101:9300", "192.168.100.102:9301","192.168.100.103:9302"]#开启跨域访问支持,默认为falsehttp.cors.enabled: true##跨域访问允许的域名, 允许所有域名http.cors.allow-origin: "*"#数据目录位置path.data: /home/finance/data/es7#日志路径path.logs: /home/finance/logs/es7

node-3

cluster.name: elasticsearch#节点名称node.name: node-3# 绑定IP地址network.host: 0.0.0.0# 指定服务访问端口http.port: 9200# 指定API端户端调用端口transport.tcp.port: 9300#集群通讯地址discovery.seed_hosts: ["192.168.100.101:9300", "192.168.100.102:9300","192.168.100.103:9300"]#集群初始化能够参选的节点信息cluster.initial_master_nodes: ["192.168.100.101:9300", "192.168.100.102:9300","192.168.100.103:9300"]#开启跨域访问支持,默认为falsehttp.cors.enabled: true##跨域访问允许的域名, 允许所有域名http.cors.allow-origin: "*"#数据目录位置path.data: /home/finance/data/es7#日志路径path.logs: /home/finance/logs/es7

1.3 查看节点及状态

#查看健康状态curl localhost:9200/_cat/health?vcurl localhost:9200/_cat/nodes

1.3.1 健康状态回显说明

cluster
集群名称status
集群状态,共有三种状态,分别green(正常)、red(代表主分片不可以,可能已经丢失数据)、yellow(代表了主分片,但至少缺失了一个副本,此时集群数据仍完整)node.total
在线的节点总数量node.data
在线的数据节点总数量shards
存活的分片数量pri
存活的主分片数量,正常情况下,pri是shards的两倍relo
迁移中的分片数量,正常是0init
初始化中的分片数量,正常是0unassign
未分配的分片,正常是0pending_tasks
准备中的任务,任务指迁移中的分片等,正常是0max_task_wait_time
任务最长等待时间active_shards_percent
正常分片百分比,正常情况为100% 2、集群概念 2.1 集群

elasticsearch集群是由一个或者多个节点组成的集合。每一个集群都有一个唯一的名称。默认是elasticsearch,我们可以自己设置的cluster_name的值,cluster_name的值非常重要,一个节点就是通过集群的名称加入集群的。然后,每一个节点都有自己的名称。节点是可以存储数据,参与集群索引数据,以及搜索数据的独立服务。

2.2 分片

因为 ES 是个分布式的搜索引擎, 所以索引通常都会分解成不同部分, 而这些分布在不同节点的数据就是分片、ES自动管理和组织分片, 并在必要的时候对分片数据进行再平衡分配, 所以用户基本上不用担心分片的处理细节。

2.3 副本

ES 默认为一个索引创建 5 个主分片, 并分别为其创建一个副本分片、也就是说每个索引都由 5 个主分片成本, 而每个主分片都相应的有一个 copy。对于分布式搜索引擎来说, 分片及副本的分配将是高可用及快速搜索响应的设计核心.主分片与副本都能处理查询请求,它们的唯一区别在于只有主分片才能处理索引请求.副本对搜索性能非常重要,同时用户也可在任何时候添加或删除副本。额外的副本能给带来更大的容量, 更高的呑吐能力及更强的故障恢复能力。

十 kibina 1、部署 1.1下载kibina

kibana版本要与es版本匹配,不然会出现兼容性问题,此次部署的es7x

#查看es版本 elasticsearch -V#kibana下载https://www.elastic.co/cn/downloads/past-releases

1.2 部署kibana

tar xvf kibana-7.4.0-linux-x86_64.tar.gz -C APP/cd APP/mv kibana-7.4.0-linux-x86_64/ kibanacat >> /home/finance/APP/kibana/config/kibana.yml << EOF#开启中文i18n.locale: "zh-CN"#http端口server.port: 5601#地址,此处不可写127.0.0.1,不然web页面访问不了server.host: "192.168.100.101"#服务名称server.name: kibana#es地址elasticsearch.hosts: ["http://localhost:9200/"]EOF

1.3 全局变量

cat >> /etc/profile.d/kibana.sh << EOFexport PATH=$PATH:/home/finance/APP/kibana/binEOFsource /etc/profile.d/kibana.sh

1.4 启动并验证

kibana >> /home/finance/logs/kibana.log &#jobs查看是否running状态#查看5601端口#web访问IP:5601

2、管理es集群 2.1 修改kibana配置

#此处为es集群地址,修改完以后重启kibanaelasticsearch.hosts: ["http://localhost:9200","http://192.168.100.101:9200","http://192.168.100.102:9200"]

十一 集群管理 1、分片配置

在创建索引时,如果不指定分片,则默认主分片为1,副本分片为1.

1.1 创建分片

3个主分片,一个副本分片

查看索引分片及副本

可以看到主分片及副本分片,在三个节点上都已经存在,如果node-1节点宕机,还可以通过其他两个节点获取到索引分片。

2.脑裂

一个es集群中,启动了多台master,即为脑裂

2.1 网络问题

集群通信因为网络延迟、波动等情况,node节点与master节点失联,将会在选举一个master,这个时候就出现了脑裂的问题。

2.1.1 避免脑裂

discovery.zen.ping.timeout超时时间设置大一些,默认是3s

2.2 节点负载

主节点的角色即为master又为date,数据量访问较大时,可能出现假死状态。
配置文件参数:

#是否有主节点资格node.master: true#是否存储数据node.date: true

2.2.1 避免脑裂

角色分离策略

候选主节点配置

#是否有主节点资格node.master: true#是否存储数据node.date: false

数据节点配置

#是否有主节点资格node.master: false#是否存储数据node.date: true

2.3 jvm回收

当master节点设置的jvm内存较小时,引发jvm大量的内存回收,造成es失去响应

2.3.1 避免脑裂

elasticsearch-7.4.0/config/jvm.options里-Xms,-Xmx

十二 logstash 1、logstash简述

logstash是一个数据收集引擎,是数据源与数据分析存储分析工具之间重要的桥梁,他有着丰富的过滤器插件。

2.logstash组件讲解

logstash由三部分组成,imput、filter、output

2.1 input输入插件

此插件作用为使 Logstash 能够读取特定的事件源,及使用此插件可选择从不同的数据源抽取数据
官网可选插件:https://www.elastic.co/guide/en/logstash/current/input-plugins.html

2.2 filter过滤器插件

此插件为将input插件获取的数据进行特定的条件过滤
官网可选插件https://www.elastic.co/guide/en/logstash/current/filter-plugins.html

2.3 output输出插件

此插件作用为将事件数据输出到指定的目的地,也就是说会将imput读取到的数据,经过filter过滤,然后通过output插件输出到指定的地方
官网可选插件:https://www.elastic.co/guide/en/logstash/current/output-plugins.html

2.4 流程图

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。