ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)

ELK初体验

实际运行效果图

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第1张图片

 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第2张图片

 

1.实际演示效果 1亿三千万的数据量 毫秒查询(没时间插入那么多的数据测试)

2. 具体资源 安装包文件,.net代码,请联系博主.....感谢大家观看至此...谢谢

3.许多不明确的地方,或者错误的地方希望大家多多提意见, 很多都是资源整合,自己实践的

1.官网

https://www.elastic.co/cn/downloads/elasticsearch

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.缺点?

  • 数据不是实时性(近实时性)
  • 功能点:告警、权限管理、关联分析等还是不太行
  • 缺点也有:各个版本的收费情况 (https://blog.csdn.net/vkingnew/article/details/91549698)
  • 还是 比较吃内存的 吃配置的
  • .........

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 (未尝试成功......)

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第3张图片

 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第4张图片

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第5张图片

安装包: 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第6张图片

 收集、查询、显示,正对应logstash、elasticsearch、kibana的功能。

 6.X以上需要添加此设置

默认不支持索引类型 需要开启

include_type_name=true

RESTFul API 请求相关内容

1.API基本格式:http://ip:port/<索引>/<类型>/<文档id>

2.常用HTTP动词:GET/PUT/POST/DELETE

字段类型:

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第7张图片

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)创建索引(数据库)

http://localhost:9200/local_idx_1

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(通配符查询)

bool查询(布尔查询)

6其他知识点

取特定字段(_source)

分页(size ,from)

排序(sort)

具体的更多详请访问

https://blog.csdn.net/shu616048151/article/details/102647313

 

关于设置字段类型,详情请看下面的文章

https://blog.csdn.net/zx711166/article/details/81667862

字段具体的图如下 

 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第8张图片

删除(DELETE)  http://127.0.0.1:9200/索引名称

使用Elasticsearch Sql插件的语法查询

elasticsearch-sql的安装

ElasticSeartch 安装目录下的 bin下面执行

1

./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.1.0/elasticsearch-sql-6.3.1.1.zip

  

参考链接

https://blog.csdn.net/fly910905/article/details/81434518

在下载一个插件(download and extract site.)

启动

cd site-server npm install express --save node node-server.js

端口被占用的话

修改 site_configuration.json 配置文件

https://www.pianshen.com/article/20981106760/

具体详情

https://blog.csdn.net/CODEROOKIE_RUN/article/details/108997073

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

 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第9张图片

另外 演示 kibana 控制台可以演示 Sql的查询效果

POST /_sql?format=json { "query": "SELECT id,title,content,date FROM local_index WHERE content like '%哈哈%'" }

IK分词的相关使用

1.IK分词的下载地址(最好对应版本)

https://github.com/medcl/elasticsearch-analysis-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":"大意了没有闪" }

 

ELK搭建以及运行和ElasticStarch的详细使用(7.X版本之上)_第10张图片

 3.然后 Kibana查看效果

1

2

3

4

5

6

7

8

9

10

11

GET _analyze

{

  "analyzer""ik_smart",

  "text":"年轻人不讲武德"

}

GET _analyze

{

  "analyzer""ik_smart",

  "text":"大意了没有闪"

}

  

C#对接使用

官方文档地址:

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/index.html

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/huhangfei/p/7524886.html

https://www.cnblogs.com/johnyong/p/12906370.html

很实用的教程

https://www.cnblogs.com/johnyong/p/12873386.html

https://blog.csdn.net/weixin_34174322/article/details/89620028

https://www.iwmyx.cn/netcoresjdsyelastic.html

http://www.manongjc.com/detail/16-bibsziudsvlydsc.html

http://www.bubuko.com/infodetail-3331205.html

https://blog.csdn.net/weixin_30650859/article/details/96112272

https://blog.csdn.net/weixin_30446197/article/details/96516827

NEST 封装

https://www.cnblogs.com/diwu0510/p/11161246.html

你可能感兴趣的:(C#,ELK,elk,c#)