ELK三剑客下载地址:
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
window版本
下载ElasticSearch后解压
进入bin
文件夹,双击elasticsearch.bat
即可运行
访问127.0.0.1:9200
,运行成功!
安装elasticsearch可视化前端项目
>下载地址:GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/
点击连接无反应,需要解决跨域问题
编辑elasiticsearch.yaml
文件添加如下配置,解决跨域问题
http.cors.enabled: true #是否支持跨域,默认为false
http.cors.allow-origin: "*" #当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization #跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Length
http.cors.allow-credentials: true #是否返回设置的跨域Access-Control-Allow-Credentials头,如果设置为true,那么会返回给客户端
http.cors.allow-methods: OPTIONS,HEAD,GET,POST,PUT,DELETE #允许跨域的请求方式,默认OPTIONS,HEAD,GET,POST,PUT,DELETE
下载kibana后解压
kibanna官网:Kibana:数据的探索、可视化和分析 | Elastic
注意:
1.kibana的版本必须与elasticsearch的版本一致
2.必须要提前安装node.js
进入bin
文件夹,双击kibana.bat
即可运行
安装ik
分词器插件
下载地址:Releases · infinilabs/analysis-ik · GitHub
注意:版本号需要与elasticsearch版本一致
将压缩包解压到elasticsearch/plugins/新建ik
文件中.
Rest风格
创建索引和文档
格式:POST /索引名称/_doc/文档ID
{
"key":"value"
}例如:
POST /test/_doc/3
{
"name":"李四",
"age":34,
"desc": "请问企鹅呃呃他",
"tag": [
"文",
"额额"
]
}
获取文档信息
格式:GET /索引名称/_doc/文档ID
GET /test/_doc/1
修改文档信息
格式:
POST /索引名称/_update/文档ID
{
"doc": {
"key":"value"
}
}例如:
POST /test/_update/2
{
"doc": {
"name": "张三"
}
}
删除索引和文档信息
删除文档
格式: DELETE /索引名称/_doc/文档ID
DELETE /test/_doc/1删除索引
格式:DELETE /索引名称
DELETE /test
简单的搜索
格式:GET /索引名称/_search?q=key:value
GET /test2/_search?q=name:三
复杂的搜索
复杂的搜索:精确,模糊.分页,高亮,排序
模糊查找
GET /test2/_search
{
"query": {
"match": {
"name" :"三"
}
}
结果过滤
GET /test2/_search
{
"query": {
"match": {
"name" :"凌福"
}
},
"_source": ["name","age"] --结果过滤
}
排序
GET /test2/_search
{
"query": {
"match": {
"name" :"凌福"
}
},
"sort": [ --排序
{
"age": {
"order": "asc" --asc:升序 desc:降序
}
}
]
}
分页
GET /test2/_search
{
"query": {
"match": {
"name" :"凌福"
}
},
"from": 0, --从第一条记录开始
"size": 2 --每页展示多少条
}
布尔值 多条件查询
must:多个条件都需要满足相当于and
should:满足一个条件即可 相当与于 or
must_not:排除这个条件,相当于 不等于
GET /test2/_search
{
"query": {
"bool": {
"must": [ ---must:多个条件都需要满足相当于and
{
"match": {
"name": "张三"
}
},
{
"match": {
"age": 23
}
}
]
}
}
}
范围搜索
gt:大于 gte:大于等于 lt:小于 lte:小于等于
GET /test2/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "王小"
}
}
],
"filter": [ --过滤
{"range": { --范围查找
"age": {
"gt": 20
}
}}
]
}
}
}
多条件查询时可以用空格隔开,只要满足其中一个就可以返回,这时可以根据分值进行判断权重
GET /test2/_search
{
"query": {
"match": {
"remake": "反反 维吾尔"
}
}
}
高亮查询
GET /test2/_search
{
"query": {
"match": {
"name": "王小"
}
},
"highlight": { --设置高亮
"pre_tags": "<p class='txt' style='color:red'>", --自定义样式
"post_tags": "</p>", --结束样式
"fields": { --设置高亮的属性
"name": {}
}
}
}
学习时遇到的问题
问题一:运行127.0.0.1:9200,失败提示:received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:6555}
解决方案:修改elasticsearch.yml
配置文件,然后重启服务