ELK(Elasticsearch , Logstash, Kibana)的使用
- 环境准备含jdk1.8及以上、node.js
官方文档
Elasticsearch官网地址: https://www.elastic.co/products/elasticsearch
官方中文文档地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
一、ElasticSearch是什么?
官方的看不懂咱也不理解,总之它就是一个分布式搜索引擎,至于能干什么呢?我们都在淘宝京东买过东西,当我们在综合搜索框进行搜索商品时,它能够进行分词搜索,从而检索出我们所输入的关键词/字所对应的上万商品。就这一点上关系型数据库例如MySQL是完全做不到的,NoSQL也比较乏力,它不支持海量的大数据搜索,最完美的还是当下比较火的ElasticSearch,业内叫ES。
ElasticSearch、elasticsearch-head、kibana下载
ElasticSearch官网:https://www.elastic.co/downloads/elasticsearch
可视化工具kibana官网:https://www.elastic.co 历史版本
如果不想下载最新版的,可以点击“past releases”选择过去的版本。我这里下载的是7.6.1版本的。
二、windows
1、解压
直接解压使用
-
跨域配置,在config目录下的elasticsearch.yml里加入
http.cors.enabled: true http.cors.allow-origin: "*"
-
jvm配置(根据自身电脑配置选择配置),在config目录下的jvm.options修改
-Xms256m -Xmx256m
-
有以下几个目录
目录 配置文件 描述 bin 放置脚本文件,如启动脚本 elasticsearch, 插件安装脚本 config elasticserch.yml elasticsearch 配置文件,如集群配置、jvm 配置 jdk java 运行环境 data path.data 数据持久化文件 lib 依赖的相关类库 logs path.log 日志文件 modules 所有 ES 模块 plugins 已安装的插件
2、启动
进入elasticsearch的bin目录,双击elasticsearch.bat启动服务,默认端口是9200,启动完成之后,在浏览器中访问http://localhost:9200,出现如下图所示内容表明Elasticsearch启动成功。
3、安装kibana(ES可视化工具)
-
同样解压即可、更改中文配置
在D:\kibana\kibana-7.6.1-windows-x86_64\config目录下的Kibana.yml文件中加入配置
i18n.locale:”zh-CN”
-
进入bin目录运行kibana.bat即可
-
浏览器访问http://localhost:5601
4、安装elasticsearch-head-master
解压后进入目录,打开命令框分别执行以下命令
npm install
nmp run start
浏览器访问 http://localhost:9100
5.windows正式使用
-
给elasticsearch安装ik插件
下载地址:https://github.com/medcl/elasticsearch-analysis-ik
-
安装
在D:\es\elasticsearch-7.6.1\plugins目录下新建ik目录将下载好的插件解压在ik目录下
-
在kinana的DevTools控制台写
GET _analyze { "analyzer": "ik_smart", "text": "斗罗大陆好看" } GET _analyze { "analyzer": "ik_max_word", "text": "斗罗大陆好看" }
-
执行后会发现右边出现如下json数据
{ "tokens" : [ { "token" : "斗", "start_offset" : 0, "end_offset" : 1, "type" : "CN_CHAR", "position" : 0 }, { "token" : "罗", "start_offset" : 1, "end_offset" : 2, "type" : "CN_CHAR", "position" : 1 }, { "token" : "大陆", "start_offset" : 2, "end_offset" : 4, "type" : "CN_WORD", "position" : 2 }, { "token" : "好看", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 3 } ] }
这就是ES强大的关键字搜索功能。
-
rest风格
rest操作:
GET:获取对象的当前状态; PUT:改变对象的状态; POST:创建对象; DELETE:删除对象; HEAD:获取头信息。
-
具体操作说明
资源 一组资源的URI,比如:http://example.com/res/ 单个资源的URI,比如:http://example.com/res/123 GET 列出URI,以及该资源组中每个资源的详细信息(后者可选) 获取指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) PUT 使用给定的一组资源替换当前整组资源 替换/创建指定的资源。并将其追加到相应的资源组中。 POST 在本组资源中创建/追加一个新的资源。该操作往往返回新的URL 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 DELETE 删除整组资源 删除指定的元素
6.索引操作
-
创建一个索引
put /索引名/类型名/文档id { 请求体 }
在head中浏览
我们发现创建了一个test1数据库并添加了一条数据。 -
创建数据库规则
PUT /test2
{
"mappings": {
"properties": {
"name":{
"type": "text"
},
"age":{
"type": "long"
},
"birthdy":{
"type": "date"
}
}
}
}
- 获取信息
GET test2
- 创建并修改值
PUT /test3/_doc/1
{
"name":"寒笑",
"age":3,
"birthdy":"1999-03-03"
}
POST /test3/_doc/1/_update
{
"doc":{
"name":"寒笑123"
}
}
- 删除索引
DELETE test1
7.文档操作(重点)
添加数据
PUT /hanxiao/user/1
{
"name":"寒笑1",
"age":4,
"desc":"近水楼台先得月",
"tags":["大长腿","技术宅","太帅"]
}
获取数据
GET hanxiao/user/1
返回结果
#! Deprecation: [types removal] Specifying types in document get requests is deprecated, use the /{index}/_doc/{id} endpoint instead.
{
"_index" : "hanxiao",
"_type" : "user",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "寒笑1",
"age" : 4,
"desc" : "近水楼台先得月",
"tags" : [
"大长腿",
"技术宅",
"太帅"
]
}
}
修改数据
POST hanxiao/user/1/_update
{
"doc":{
"name":"寒笑半步巅"
}
}
简单精准查询
GET hanxiao/user/_search
{
"query": {
"match": {
"name": "寒笑"
}
},
"_source": ["name","desc"]
}
返回结果
#! Deprecation: [types removal] Specifying types in search requests is deprecated.
{
"took" : 47,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.6285465,
"hits" : [
{
"_index" : "hanxiao",
"_type" : "user",
"_id" : "1",
"_score" : 1.6285465,
"_source" : {
"name" : "寒笑半步巅",
"desc" : "近水楼台先得月"
}
}
]
}
}