百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

2、ELS基本使用入门

mhr18 2024-12-09 12:09 21 浏览 0 评论

ELK概念
配置文件简介
Elastic安装
Development与Production模式说明
Elasticsearch本地快速启动集群的方式
上传命令
Elasticseaerch常用术语
搜索命令
yum安装ElasticSearch
rpm安装ElasticSearch
插件
测试提交数据
测试查询


ELK概念

    如果有一个运行中的web服务器,那这个web服务器生成的大量的日志信息,对于elasticsearch来讲每一条日志都可以作为一个文档,它有日志的生成时间时间本身等等。那我们就需要把日志信息一个一个抽出来导进去,那我们就需要一个组件来实现,首先将这个信息抽取出来,然后自己作为elasticsearch的客户端把它推送到elasticsearch上面来,由elasticsearch来自己完成文档的建立,所以我们还需要告诉elasticsearch改怎么去分词分析这些信息。
    因此我们可以在本地找一个组件,这个组件可以自己去加载每一条web日志信息的日志
记录并且加载完成之后,还能够将这些信息生成为文档格式,加上标题和值。把这些信息发给elasticsearch,就可以了。
    如果说这些日志信息太多了,我们的elasticsearch压力太大,那么我们可以在中间加一个收集信息的组件,比如我们的redis服务器收集日志完成之后先发送给redis,然后发给我们的elasticsearch,那我们的redis不断的生成日志信息,我们的elasticsearch也就能够不断的获取到这个数据,所以我们想分析一下在一天当中哪个页面访问量最大,哪个IP访问最频繁,这就很方便了。但是elasticsearch给我们提供的无论是搜索还是展示接口都是通过http协议来实现的,我们可以使用curl命令与其交互。所以我们的elasticsearch就结合了Kinaba,它能够和elasticsearch进行交互,并且提供一个检索借口,用户键入检索条件,点击提交以后Kinaba能够生成一个搜索基本查询条件发给elasticsearch集群,由elasticsearch返回结果以后由再进行一次格式化就可以优雅的展示给用户。
那么数据就是通过我们的Logstash/Beats这个组件专门负责到我们的web服务器上去收集日志,因为我们的Logstash非常占据主机的资源,所以在ElasticSearch的5.0时代使用的都是Beats,Beats是一个项目名称,是一个项目,有的专门负责收集日志信息,有的专门收集网络通信相关的信息等等等,所以我们现在可以结合Beats这种工具来收集信息了。
  • ElasticSearch官方地址:https://www.elastic.co
  • ElasticSearch下载地址:https://www.elastic.co/downloads/past-releases

配置文件简介

cluster.name:集群名称,以此作为是否同一集群的判断条件;
node.name:节点名称,以此作为集群中不同节点的判断条件;
path.data:节点角色配置,true表示可以成为数据节点,false不能成为数据节点;
node.master:节点角色配置,true表示可以成为主节点,false不能成为主节点;
node.ingest:节点角色配置,true表示可以成为协调节点,false不能成为协调节点(简单解释,请以官方为准);
node.attr.rack:节点服务器所在的机柜信息,可能在数据分布中起到指导作用;
network.host #监听地址
http.port #监听端口
discovery.zen.ping.unicast.hosts:有哪些主机是作为集群节点
discovery.zen.minimum_master_nodes:防止脑裂,这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量(我们的情况是3,因此这个参数设置为2,但对于只有2个节点的情况,设置为2就有些问题了,一个节点DOWN掉后,你肯定连不上2台服务器了,这点需要注意)。;
gateway.recover_after_nodes:控制集群在达到多少个节点之后才会开始数据恢复,通过这个设置可以避免集群自动相互发现的初期,shard分片不全的问题,假如es集群内一共有5个节点,就可以设置为5,那么这个集群必须有5个节点启动后才会开始数据分片,如果设置为3,就有可能另外两个节点没存储数据分片;
node.max_local_storage_nodes #用来控制节点是否允许从单目录启动多个实例。如果物理机节点承担太多的数量的实例,很容易会超过了其硬件承受能力,总体性能都要下降,设置1为禁止。
transport.tcp.port:内部通信端口;
bootstrap.memory_lock:锁住内存,确保ES不使用swap;
bootstrap.system_call_filter:系统调用过滤器,建议禁用该项检查,因为很多检查项需要Linux 3.5以上的内核,否则会;

Elastic安装

# 需要安装jdk
[root@op-machine ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz -O /usr/local/elasticsearch-6.5.4.tar.gz
[root@op-machine ~]# cd /usr/local/
[root@op-machine /usr/local]# tar xf elasticsearch-6.5.4.tar.gz
[root@op-machine ~]# mv elasticsearch-6.5.4 elasticsearch
Development与Production模式说明
    以transport地址(network.host)是否绑定在localhost为判断标准,如果是localhost那么就是Development;
    Development模式下会在启动时会议warning的方式提示配置检查异常;
    Production模式下会在启动时会议error的方式提示配置检查异常;
修改模式的第二种方式
    bin/elasticsearch -d -Ehttp.prot=9200
Elasticsearch本地快速启动集群的方式
# 记得查看discovery.zen.ping.unicast.hosts的配置
/usr/local/elasticsearch/bin/elasticsearch -Ehttp.port=9200 -Epath.data=node1 -Enode.name=node1 -d
/usr/local/elasticsearch/bin/elasticsearch -Ehttp.port=8200 -Epath.data=node2 -Enode.name=node2 -d
/usr/local/elasticsearch/bin/elasticsearch -Ehttp.port=7200 -Epath.data=node3 -Enode.name=node3 -d

上传命令

索引名:myindex
文档类型:books
文档ID:1
-d:json格式的文档内容

Elasticseaerch常用术语

Document:文档数据;
Index:索引,可以理解为数据库;
Type:索引中的数据类型,可以理解数据库中的一个表;
Field:字段,文档的字段属性;
Query DSL:查询语法;

搜索命令

-q:指定搜索条件
fields:只对搜索结果显示哪个字段
size:分页查看时一次显示多少个文档
pretty:显示格式

yum安装ElasticSearch

1、安装jdk
[root@node1 ~]# tar xf jdk-8u144-linux-x64.tar.gz
[root@node1 ~]# mv jdk1.8.0_144/ /usr/local/jdk1.8
[root@node1 ~]# tail -3 /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/*:${JAVA_HOME}/lib/*
export PATH=$PATH:${JAVA_HOME}/bin
2、导入key
[root@node1 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
3、配置yum源
[root@node1 ~]# cat << EOF >> /etc/yum.repos.d/elasticsearch.repo
[Elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOF
3、安装elasticsearch
[root@node1 ~]# yum install elasticsearch

rpm安装ElasticSearch

1、安装
[root@node1 ~]# yum install -y java-1.8.0-openjdk-devel
[root@node1 ~]# rpm -vih elasticsearch-2.3.4.rpm 
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable elasticsearch
2、配置ElasticSearch
[root@node1 ~]# grep '^[^#]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: els_cluster
node.name: node1.cce.com
network.host: 0.0.0.0
path.data: /data/els
[root@node1 ~]# mkdir -p /data/els
[root@node1 ~]# chown elasticsearch:elasticsearch /data/els/
3、启动
[root@node1 ~]# netstat -ntlp|grep '9.00'
tcp6       0      0 :::9200                 :::*                    LISTEN      1400/java        
tcp6       0      0 :::9300                 :::*                    LISTEN      1400/java
[root@node1 ~]# curl localhost:9200
{
  "name" : "node1.cce.com",
  "cluster_name" : "els_cluster",
  "version" : {
    "number" : "2.3.4",
    "build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
    "build_timestamp" : "2016-06-30T11:24:31Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.0"
  },
  "tagline" : "You Know, for Search"
}
4、使用curl来上传一个测试文档
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/1 -d       '{name:"elasticsearch",publish:"oreilley",auther:"caichangen"}'
{"_index":"myindex","_type":"books","_id":"1","_version":1,"_shards":    {"total":2,"successful":1,"failed":0},"created":true}
5、获取提交的内容
[root@node1 ~]# curl -XGET http://192.168.1.71:9200/myindex/books/1?pretty
{
  "_index" : "myindex",
  "_type" : "books",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "name" : "elasticsearch",
    "publish" : "oreilley",
    "auther" : "caichangen"
  }
}    6、继续上传文档
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/2 -d     '{name:"xiyouji",publish:"shushe",auther:"cce"}'
{"_index":"myindex","_type":"books","_id":"2","_version":1,"_shards":    {"total":2,"successful":1,"failed":0},"created":true}
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/3 -d     '{name:"shuhuzhuan",publish:"charcce",auther:"char"}'
{"_index":"myindex","_type":"books","_id":"3","_version":1,"_shards":    {"total":2,"successful":1,"failed":0},"created":true}
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/4 -d     '{name:"docker",publish:"charset",auther:"aobama"}'
{"_index":"myindex","_type":"books","_id":"4","_version":1,"_shards":    {"total":2,"successful":1,"failed":0},"created":true}
7、测试全文模糊匹配搜索
[root@node1 ~]# curl "http://192.168.1.71:9200/_search?q=cce&pretty"
{
  "took" : 6,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.5,
    "hits" : [ {
      "_index" : "myindex",
      "_type" : "books",
      "_id" : "2",
      "_score" : 0.5,
      "_source" : {
        "name" : "xiyouji",
        "publish" : "shushe",
        "auther" : "cce"
      }
    } ]
  }
}

插件

对于ElasticSearch集群而言,它有自己的插件功能,能够通过插件的方式来观察集群和扩展集群;我们可以直接将插件放置在ElasticSearch的插件目录就可以了,或者使用plugin来安装
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install -h
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install file:///root/elasticsearch-head-latest.zip 
-> Installing from file:/root/elasticsearch-head-latest.zip...
Trying file:/root/elasticsearch-head-latest.zip ...
Downloading .........DONE
Verifying file:/root/elasticsearch-head-latest.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed head into /usr/share/elasticsearch/plugins/head
测试通过http的方式访问我们安装的插件
测试提交数据
测试查询

相关推荐

一文读懂Prometheus架构监控(prometheus监控哪些指标)

介绍Prometheus是一个系统监控和警报工具包。它是用Go编写的,由Soundcloud构建,并于2016年作为继Kubernetes之后的第二个托管项目加入云原生计算基金会(C...

Spring Boot 3.x 新特性详解:从基础到高级实战

1.SpringBoot3.x简介与核心特性1.1SpringBoot3.x新特性概览SpringBoot3.x是建立在SpringFramework6.0基础上的重大版...

「技术分享」猪八戒基于Quartz分布式调度平台实践

点击原文:【技术分享】猪八戒基于Quartz分布式调度平台实践点击关注“八戒技术团队”,阅读更多技术干货1.背景介绍1.1业务场景调度任务是我们日常开发中非常经典的一个场景,我们时常会需要用到一些不...

14. 常用框架与工具(使用的框架)

本章深入解析Go生态中的核心开发框架与工具链,结合性能调优与工程化实践,提供高效开发方案。14.1Web框架(Gin,Echo)14.1.1Gin高性能实践//中间件链优化router:=...

SpringBoot整合MyBatis-Plus:从入门到精通

一、MyBatis-Plus基础介绍1.1MyBatis-Plus核心概念MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提...

Seata源码—5.全局事务的创建与返回处理

大纲1.Seata开启分布式事务的流程总结2.Seata生成全局事务ID的雪花算法源码3.生成xid以及对全局事务会话进行持久化的源码4.全局事务会话数据持久化的实现源码5.SeataServer创...

Java开发200+个学习知识路线-史上最全(框架篇)

1.Spring框架深入SpringIOC容器:BeanFactory与ApplicationContextBean生命周期:实例化、属性填充、初始化、销毁依赖注入方式:构造器注入、Setter注...

OpenResty 入门指南:从基础到动态路由实战

一、引言1.1OpenResty简介OpenResty是一款基于Nginx的高性能Web平台,通过集成Lua脚本和丰富的模块,将Nginx从静态反向代理转变为可动态编程的应用平台...

你还在为 Spring Boot3 分布式锁实现发愁?一文教你轻松搞定!

作为互联网大厂后端开发人员,在项目开发过程中,你有没有遇到过这样的问题:多个服务实例同时访问共享资源,导致数据不一致、业务逻辑混乱?没错,这就是分布式环境下常见的并发问题,而分布式锁就是解决这类问题的...

近2万字详解JAVA NIO2文件操作,过瘾

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。从classpath中读取过文件的人,都知道需要写一些读取流的方法,很是繁琐。最近使用IDEA在打出.这个符号的时候,一行代...

学习MVC之租房网站(十二)-缓存和静态页面

在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用、发邮件,并将通过UEditor上传的图片保存到云存储。在项目的最后,再学习优化网站性能的一些技术:缓存和...

Linux系统下运行c++程序(linux怎么运行c++文件)

引言为什么要在Linux下写程序?需要更多关于Linux下c++开发的资料请后台私信【架构】获取分享资料包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdf...

2022正确的java学习顺序(文末送java福利)

对于刚学习java的人来说,可能最大的问题是不知道学习方向,每天学了什么第二天就忘了,而课堂的讲解也是很片面的。今天我结合我的学习路线为大家讲解下最基础的学习路线,真心希望能帮到迷茫的小伙伴。(有很多...

一个 3 年 Java 程序员 5 家大厂的面试总结(已拿Offer)

前言15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去了网易。但是要...

多商户商城系统开发全流程解析(多商户商城源码免费下载)

在数字化商业浪潮中,多商户商城系统成为众多企业拓展电商业务的关键选择。这类系统允许众多商家在同一平台销售商品,不仅丰富了商品种类,还为消费者带来更多样的购物体验。不过,开发一个多商户商城系统是个复杂的...

取消回复欢迎 发表评论: