本地ELK搭建和使用(windows10)

ELK实时日志分析平台

Elasticsearch 是一个搜索和分析引擎。
Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等存储库中。
Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

数据处理流程.png

安装教程

1.ES索引 (index)

按照索引存储,类似关系型数据库的一个数据库(database)比如test
可以创建很多个索引,名字必须唯一,名字必须全部是小写字母

2.类型(type)

一个索引可以创建任意多个类型(es6.0之前一个索引可以创建多个类型,es6.0还能兼容多5.0的多个类型,es7.0一个索引只支持创建一个类型) 用户类型,部门类型,员工类型
类似关系型数据库的表

3.映射(mapping)

和关系型数据库中的约束类似(schema),指定类型的长度,字段
4.文档(document)
存储json格式 比如 {"id":12,"name":"lisi","age":123}


es_index.png

以下demo基于ES7.16.2

全文检索

一.索引操作:

1.1 PUT 创建索引:

PUT /es_test

1.2 DELETE 删除索引

DELETE /es_test

1.3 GET 查看所有索引

GET /_cat/indices

1.4 类型操作

创建用户索引 id name age bir
PUT /es_test
{
"mappings": {
"properties": {
"id": {"type": "integer"},
"name": {"type": "text" },
"age": { "type": "integer" },
"bir": { "type": "date" },
"system_code": {
"type": "integer",
"index": false
}
}
}
}

1.5 添加一条数据 格式 POST 或者 PUT /_index/_type
1.5.1方式一 不指定id 自动生成

POST /es_test/_doc
{
"id":1,
"name":"zhangsan333",
"age":120,
"bir":"2021-10-10"
}

1.5.2方式二 指定id

PUT /es_test/_doc/6
{
"id":1,
"name":"zhangsan6666",
"age":14,
"bir":"2021-10-14"
}

1.6 查看索引的类型

GET /es_test/_mapping

1.7 获取值

GET /es_test/_doc/1
// 获取指定字段
GET /es_test/_doc/1 ?_source=age,name
// 只返回字段和值,其他信息不返回
GET /es_test/_doc/1/_source

1.8 删除文档的值

DELETE /es_test/_doc/7

1.9更新类型的值
1.9.1删除之前的类型值,并插入

POST /es_test/_doc/3IMPR34Bn3IkzFkShpCk
{
"name":"zhangsantest1"
}

1.9.2更新之前的类型值,不删除

POST /es_test/_doc/3IMPR34Bn3IkzFkShpCk/_update
{
"name":"zhangsantest1"
}

1.10批量操作

POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
{ "doc" : {"title" : "My updated blog post"} }

二.检索

2.1 QueryingString 查询参数 拼接参数 只适合简单的查询,url长度有限

GET /index/_search?

2.1.1 查询所有值

GET /es_test/_search?q=*
GET /es_test/_search?q=&sort=age 按照年龄排序
分页
from 从哪一条数据开始查查
size 显示条数
默认返回10条
GET /es_test/_search?q=
&sort=age&size=30

2.2 QueryDSL 写请求体,传入json
2.2.1 查询所有 GET /index/_search

{
"query":{
"match_all":{}
},
}

2.2.2查询所有并排序

GET /es_test/_search
{
"query":{
"match_all":{}
},
"size":20,
"from":1,
"sort":[{
"age":{
"order":"desc"
}
}]
"_source":["name","age"]
}

2.2.3基于关键词查询

GET /es_test/_search
{
"query":{
"term": {
"name": {
"value": "海"
}
}
}
}

2.2.4范围过滤

GET /es_test/_search
{
"query": {
"range": {
"age": {
"gte": 10,
"lte": 20,
"boost": 2.0
}
}
}
}

2.2.5前缀查询

GET /es_test/_search
{
"query": {
"prefix": {
"name": {
"value": "zhang"
}
}
}
}

2.2.6通配符查询 wildcard

?匹配一个 匹配多个
"value": "zhang?"
"value": "zhang
"
GET /es_test/_search
{
"query": {
"wildcard": {
"name": {
"value": "zhang?"
}
}
}
}

2.2.7模糊查询 fuzzy 最大模糊错误 0-2个

模糊关键字长度等于2,不能有模糊错误 0
模糊关键字长度3-5,允许最大有1个模糊错误 0 1
模糊关键字大于5,允许最大有2个模糊错误 0 1 2
GET /es_test/_search
{
"query": {
"fuzzy": {
"name": {
"value": "zhang"
}
}
}
}

注意事项


注意.png
2.2.8 bool查询

must 等价于逻辑运算的&&
should 等价于||
must_not 等价于!
GET /es_test/_search
{
"query":{
"bool":{
"must":[
{
"term":{
"age":{
"value":"14"
}
}
},
{
"term":{
"name":{
"value":"zhangsan4444"
}
}
}
]
}
}
}

2.2.9 高亮查询

GET /es_test/_search
{
"query":{
"term": {
"name": {
"value": "name1"
}
}
},
"highlight":{
"fields":{
"name":{}
}
}
}

2.2.10 多字段查询

GET /es_test/_search
{
"query":{
"multi_match": {
"query": "name1",
"fields":["name","content"]
}
}
}

2.2.10 多字段分词查询,可以指定分词器

GET /es_test/_search
{
"query":{
"query_string": {
"query": "北海", //查出含有北和海的结果
"fields":["name","content"]
}
}
}

分词(type-text)

只有text类型分词:默认分词器为标准分词器,分词器对中文单字分词,对英文一个单词分词
type-keyword,integer,date:不分词

搜索原理
搜索原理.png
IK分词器-中文分词器
直接命令行安装

进入到bin目录,按照自己的版本下载
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.2/elasticsearch-analysis-ik-7.16.2.zip

直接下载

https://github.com/medcl/elasticsearch-analysis-ik/releases 按照自己的版本下载

测试分词器

GET /_analyze
{
"text":"中华人民共和国国歌",
"analyzer": "ik_smart"
}

分词器测试结果.png
创建索引指定分词器

PUT /blog_test
{
"mappings": {
"properties": {
"id": {"type": "integer"},
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"content": {
"type": "text",
"analyzer": "ik_max_word"
},
"time": { "type": "date"},
"total": {"type": "integer"}
}
}
}

POST /blog_test/_doc
{
"id":1,
"title":"国内新闻",
"content":"疫情得到有效控制,北京冬奥会将如期举行",
"total":1,
"time":"2022-01-18"
}

POST /blog_test/_doc
{
"id":2,
"title":"国际新闻",
"content":"美丽锅疫情失去控制,感染人数超过6千万人,死亡人数80多万",
"total":1,
"time":"2022-01-18"
}

POST /blog_test/_doc
{
"id":3,
"title":"国际新闻",
"content":"某欧洲国家与某印签署大额军火交易订单,某印支付600亿元购买军火",
"total":1,
"time":"2022-01-18"
}

GET /blog_test/_search
{
"query":{
"query_string": {
"query": "交易,军火",
"fields":["title","content"]
}
}
}

//ik扩展,指定扩展词典
elasticsearch-7.16.2\plugins\analysis-ik\IKAnalyzer.cfg 指定扩展词典
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>

<entry key="ext_dict">extra_test.dic</entry>

<entry key="ext_stopwords"></entry>




</properties>

坑:本地安装ik分词器和在线安装的ik分词器的配置文件不在一个目录,特别需求注意,
优先读取 es下的config\analysis-ik\ 的配置文件 IKAnalyzer.cfg
没有才读取 es下的plugins\analysis-ik\config\IKAnalyzer.cfg目录下的配置文件

!!!!添加扩展字典后,之前添加的数据不会生效,要生效的话必须重新插入数据,才会生效。

filter Query


image.png
2.2.11 范围过滤 must

GET /blog_test/_search
{
"query":{
"bool":{
"must":[{
"term":{
"content": {
"value":"蓝瘦"
}
}
}
],
"filter": [
{
"range": {
"total": {
"lte": 2,
"gte": 20
}
}
}
]
}
}
}

2.2.12 文本过滤

GET /blog_test/_search
{
"query":{
"bool":{
"must":[{
"term":{
"title": {
"value":"网络"
}
}
}
],
"filter": [
{
"term":{
"content": {
"value":"蓝瘦"
}
}
}
]
}
}
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容