ELK初体验
 
 
1.官网
 
 
2.需要安装JDK
 
ElasticSearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
 
所采用的是倒排索引
 
1.正排索引: 由文档指向关键词
 文档--> 单词1 ,单词2
单词1 出现的次数  单词出现的位置; 单词2 单词2出现的位置  ...
 
2.倒排索引: 由关键词指向文档
单词1--->文档1,文档2,文档3
单词2--->文档1,文档2
 
 倒排的优缺点和正排的优缺点整好相反。倒排在构建索引的时候较为耗时且维护成本较高,但是搜索耗时短。
 
我们使用Elasticsearch来完成日志的检索、分析工作。
 
bin目录下
 
elasticsearch-service.bat后面还可以执行这些命令 
install: 安装Elasticsearch服务 
remove: 删除已安装的Elasticsearch服务(如果启动则停止服务) 
start: 启动Elasticsearch服务(如果已安装) 
stop: 停止服务(如果启动) 
manager:启动GUI来管理已安装的服务
 
 
Logstash 是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。
我们使用Logstash来完成日志的解析、存储工作。
 
 
Kibana 是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。
我们使用Kibana来进行日志数据的展示工作。
 
 
Beats:安装在每台需要收集日志的服务器上,将日志发送给Logstash进行处理,所以Beats是一个“搬运工”,将你的日志搬运到日志收集服务器上。Beats分为很多种,每一种收集特定的信息。常用的是Filebeat,监听文件变化,传送文件内容。一般日志系统使用Filebeat就够了。
 
 

使用分析

 
1.优点?
ELK 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
 
ELK 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点:
 
  • 处理方式灵活:Elasticsearch 是实时全文索引;
 
  • 配置简易上手
 
  • 检索性能高效:
 
  • 集群线性扩展:(分布式功能);
 
  • 前端操作炫丽:Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板
 
  • 有很多相关的 配套插件
 
  • .........
 
2.缺点?
 
3.为什么使用? 用途 ?
 
1
  • 数据(日志)的日益增多
  • 开源
  • ELK 本身非常易用,有一个非常好的社区
  • .........
 
2
  • 问题排查
  • 监控和预警
  • 关联事件
  • 数据分析
 
4.一般的使用场景是?
 
大数据日志分析, 大量的订单数据等等, 分布式整合收集各种日志 统一查看等等
 
 
注意一些点
  • 修改默认的 Elasticsearch 集群名称
  • 不要暴露 Elasticsearch 在公网上
  • 不要以 root 身份运行 Elasticsearch
  • 定期对 Elasticsearch 进行备份
  • 安装Elasticsearch的权限系统插件-SearchGuard
  • 利用操作系统防火墙设置规避9200端口开放问题
 
 
 
离线的方式(也是所推荐的)
常见的三种
· Beats ==> Elasticsearch ==> Kibana
· Beats ==> Logstash ==> Elasticsearch ==> Kibana
· Beats ==> Kafka ==> Logstash ==> Elasticsearch ==>Kibana (未尝试成功......)
 
 
 
 
 
 
 
 
 
 
安装包: 
 
 
 收集、查询、显示,正对应logstash、elasticsearch、kibana的功能。
 
 6.X以上需要添加此设置
默认不支持索引类型 需要开启
 
include_type_name=true
 
 
 

RESTFul API 请求相关内容

 
 
1.API基本格式:http://ip:port/<索引>/<类型>/<文档id>
2.常用HTTP动词:GET/PUT/POST/DELETE
 
字段类型:
 
keyword类型
1:支持模糊、排序操作,不进行分词,支持精确匹配,直接索引,支持聚合 2:keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。
3.存储数据时候,不会分词建立索引
 
text类型
1:支持模糊、排序操作,支持分词,也可以精确查询、全文检索,不支持聚合 2:test类型的最大支持的字符长度无限制,适合大字段存储; 使用场景: 存储全文搜索数据, 例如: 邮箱内容、地址、代码块、博客文章内容等。 默认结合standard analyzer(标准解析器)对文本进行分词、倒排索引。 默认结合标准分析器进行词命中、词频相关度打分。
 
存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间
 
 
IK分词具体可以演示(kibana 控制台演示)
使用场景: 存储邮箱号码、url、name、title,手机号码、主机名、状态码、邮政编码、标签、年龄、性别等数据。 用于筛选数据(例如: select * from x where status='open')、排序、聚合(统计)。 直接将完整的文本保存到倒排索引中。
 
 
(PUT)创建索引(数据库)
 
PUT(mappings) 创建了索引(数据库),并且设置映射字段信息
 
1.设置映射的mappings字段等字段类型等
PUT
http://localhost:9200/local_index/cytest/ 在POST时
{
"mappings": {
"cytest": {
"id": {
"type": "long"
},
"title": {
"type": "text"
},
"content": {
"type": "keyword"
},
"date": {
"type": "date",
"fromat": "yyyy-MM-dd HH:mm:ss"
}
}
}
} 2. 往对应的映射字段里面赋值(链接(POST http://localhost:9200/local_idx_1/cytest/))
下数据库_表下增加一个数据) {
"id": "1",
"title": "测试数据1",
"content": "大意了没有闪",
"date": "2020-11-04"
} 修改的话 得到_id 拼到链接后面 传入数据就是修改 3.简单查询 POST (http://localhost:9200/local_index/cytest/_search/) POST http://127.0.0.1:9200/myname/_search
{
"query":{
"match":{
"name":"zhangsan"
}
}
}
{
"query":{
"term":{
"Title":"徐若蓬稚"
}
}
} 1 term查询(精准查询)
terms 查询是term的扩展,可以支持多个vlaue匹配,只需要一个匹配就可以了。
2 math查询(分词匹配查询)
match查询是按ES分词的倒排表进行查询,而keyword不会被分词,match的需要跟keyword的完全匹配可以。可以用于一般性的匹配查询。
match_all可以用于查询全部信息。
multi_match
multi_match是多字段进行匹配查询。
3 fuzzy查询(模糊查询)
4 wildcard(通配符查询)
5 bool查询(布尔查询)
6其他知识点
取特定字段(_source)
分页(size ,from)
排序(sort) 具体的更多详请访问
https://blog.csdn.net/shu616048151/article/details/102647313

  

 
 
关于设置字段类型,详情请看下面的文章
https://blog.csdn.net/zx711166/article/details/81667862
字段具体的图如下 
 
 
 
 
 
 
 
 
 
使用Elasticsearch Sql插件的语法查询
 
elasticsearch-sql的安装
 
ElasticSeartch 安装目录下的 bin下面执行
 
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.1.0/elasticsearch-sql-6.3.1.1.zip

  

参考链接
 
在下载一个插件(download and extract site.)
启动
cd site-server npm install express --save node node-server.js
端口被占用的话
修改 site_configuration.json 配置文件
 
 
具体详情
 
elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.1.0/elasticsearch-sql-6.3.1.1.zip
 
 
 
  1. cd site-server
  2. npm install express --save
  3. node node-server.js
 
 
 
另外 演示 kibana 控制台可以演示 Sql的查询效果
 
POST /_sql?format=json { "query": "SELECT id,title,content,date FROM local_index WHERE content like '%哈哈%'" }
 
 
 

IK分词的相关使用

 
1.IK分词的下载地址(最好对应版本)
 
2.解压到elasticsearch-7.6.1\plugins目录的 新建ik 文件下就好了
 
3. 然后重启elasticsearch
 
4.使用kibana 查看效果
 
1. 索引时用 ik_max_word
2. 在搜索时用 ik_smart
 
POST _analyze { "analyzer":"ik_max_word", "text":"我爱你中国" }
 
 
自定义分词
1. \plugins\ik\config路径下 创建test文件, 在创建分词.dic文件
 
2. 然后 IKAnalyzer.cfg.xml 配置分词文件路径,如图:

GET _analyze { "analyzer": "ik_smart", "text":"年轻人不讲武德" } GET _analyze { "analyzer": "ik_smart", "text":"大意了没有闪" }
 
 
 
 3.然后 Kibana查看效果
 
GET _analyze
{
"analyzer": "ik_smart",
"text":"年轻人不讲武德"
} GET _analyze
{
"analyzer": "ik_smart",
"text":"大意了没有闪"
}

  

C#对接使用

 
官方文档地址:
 
ElasticSearch官方网站提供了两个.net客户端驱动程序
 
Elasticsearch.Net
NEST 更高级一点
 
例子采用 NEST 程序
 
 
类比传统关系型数据库:
 
//Relational DB -> Databases -> Tables -> Rows -> Columns
//Elasticsearch -> Indices -> Types -> Documents -> Fields
 
 
DB使用过程:创建数据库->创建表(主要是设置各个字段的属性)->写入数 ES使用过程:创建索引->为索引maping一个Type(同样是设置类型中字段的属性)->写入数
 
详情参考文章
 
 
很实用的教程
https://www.cnblogs.com/johnyong/p/12873386.html
 
 
 
 
 
 
 
NEST 封装
 
 
 
 
 
 
 
 
 
 

实际运行效果图

 
 
 
 
 
 
 
1.实际演示效果 1亿千万的数据量 毫秒查询(没时间插入那么多的数据测试)
 
 
2. 具体资源 安装包文件,.net代码,请联系博主.....感谢大家观看至此...谢谢
 
3.许多不明确的地方,或者错误的地方希望大家多多提意见, 很多都是资源整合,自己实践的
 
 
 
 
 
 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)的更多相关文章

  1. elk搭建的详细步骤以及说明

    一:准备工作 1.准备一台虚拟机 192.168.175.222      elk-node2 2.关闭防火墙以及selinux 命令:systemctl stop firewalld       # ...

  2. 基于Kafka+ELK搭建海量日志平台

    早在传统的单体应用时代,查看日志大都通过SSH客户端登服务器去看,使用较多的命令就是 less 或者 tail.如果服务部署了好几台,就要分别登录到这几台机器上看,等到了分布式和微服务架构流行时代,一 ...

  3. 利用 ELK 搭建 Docker 容器化应用日志中心

    利用 ELK 搭建 Docker 容器化应用日志中心 概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 ...

  4. Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程

    Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程 看了好多人的博客,有的不全 or 有问题,整理了一下,适合小白 新手先整理几个小问题 1.为啥使用 Linux 搭建服务器? ...

  5. 2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)

    章节一  2018年 ELK课程计划和效果演示1.课程安排和效果演示    简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示    es: localhost:9200    k ...

  6. Asp.net Core + Log4net + ELK 搭建日志中心

    原文:Asp.net Core + Log4net + ELK 搭建日志中心 Docker中一键安装ELK 对于这种工具类的东西,第一步就直接到docker的hub中查找了,很幸运,不仅有Elasti ...

  7. 海量可视化日志分析平台之ELK搭建

    ELK是什么? E=ElasticSearch ,一款基于的Lucene的分布式搜索引擎,我们熟悉的github,就是由ElastiSearch提供的搜索,据传已经有10TB+的数据量. L=LogS ...

  8. ELK搭建(docker环境)

    ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是一套开 ...

  9. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

随机推荐

  1. Ajax接收int类型乱码

    在Ajax返回值类型是 "text" 的时候,接收int类型时可能会出现ၧ 解决方法:将int转为String即可 int money =100; String s = Integ ...

  2. spring-boot-route(三)实现多文件上传

    Spring Boot默认上传的单个文件大小1MB,一次上传的总文件大小为10MB. 单个文件上传使用MultipartFile参数来接收文件,多文件使用MultipartFile[]数组来接收,然后 ...

  3. Java知识系统回顾整理01基础04操作符07Scanner

    一.Scanner 需要用到从控制台输入数据时,使用Scanner类. 二.使用Scanner读取整数 注意: 使用Scanner类,需要在最前面加上 import java.util.Scanner ...

  4. webfunny前端监控开源项目

    前言介绍 如果你是一位前端工程师,那你一定不止一次去解决一些顽固的线上问题,你也曾想方设法复现用户的bug,结果可能都不太理想. 怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一 ...

  5. mac电脑上安装appium报错:Failed at the appium-chromedriver@4.25.1 postinstall script.

    mac电脑安装appium,装好node.js后,使用命令:npm install appium@1.18.0,安装appium,报如下错误 ``` ERR! errno1 ERR! appium-c ...

  6. select函数详解(转)

    Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect. accept.recv或recvfrom这样的阻塞 ...

  7. day53 Pyhton 前端04

    内容回顾: 盒子: 内边距:padding,解决内部矛盾,内边距的增加整个盒子也会增加 外边距:margin,解决外部矛盾,当来盒子都有外边距的时候,取两者最大值 边框:border border-c ...

  8. IDEA SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统

    先放上github地址:spike-system,可以直接下载完整项目运行测试 SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统 技术栈:SpringBoot, MyS ...

  9. 关于pipeline的一篇转载博文https://www.cnblogs.com/midhillzhou/p/5588958.html

    引用自https://www.cnblogs.com/midhillzhou/p/5588958.html 1.pipeline的产生 从一个现象说起,有一家咖啡吧生意特别好,每天来的客人络绎不绝,客 ...

  10. selenium 浏览器标签切换

    from time import sleep from selenium import webdriver from selenium.webdriver.chrome.options import ...