elasticsearch7.6.1笔记

前置说明

最近需要接手elasticsearch 6.8版本之前 之前使用过程中发现权限验证属于软件付费功能 6.8 7.X之后安全相关才是免费 找到得7以上得教程 目前b站找到教程如下:
狂神说
本笔记记录学习过程

安装

1、选择下载7.6.1安装链接

java 1.8 可参考我环境部署博文中 java模块
elasticsearch
logstash
kibana
想用docker 像docker低头 后面可能会补充docker安装步骤

2、linux安装

tar xvzf elasticsearch-7.6.1-linux-x86_64.tar.gz
tar xvzf kibana-7.6.1-linux-x86_64.tar.gz
tar xvzf logstash-7.6.1.tar.gz

地方不够 先扩了个容

3、window 安装

下载对应得版本zip elasticsearch,head,kibana包

elasticsearch

直接解压
启动前修改
elasticsearch.yml

#关闭权限验证我猜
xpack.ml.enabled: false
#head跨域解决
http.cors.enabled: true
http.cors.allow-origin: "*"

运行bin目录下得elasticsearch.bat 文件启动
浏览器打开验证是否安装成功
127.0.0.1:9200

head

head依赖python环境(本地已有npm环境安装步骤略)
命令行在head主目录下
npm install 安装报错
npm -g install phantomjs-prebuilt@2.1.16 --ignore-script
head 启动 npm run start
浏览器打开验证是否成功
127.0.0.1:9100

kibana

也是在bin目录下运行bat文件直接执行
默认端口5601

4、docker安装

执行操作扩大空间(不执行会因为空间不够启动不起来)

vi /etc/sysctl.conf 
#加如下内容
vm.max_map_count=655360
#执行
sysctl -p

ulimit -u 65535

执行镜像下载(由于下载总是卡住 所以镜像下载和运行分开执行)

elasticsearch
docker pull elasticsearch:7.6.1
 

 
docker network create somenetwork
## 本地windows安装了 es了 不想端口冲突 就另外指了一个端口
docker run -d --name elasticsearch --net somenetwork -p 19200:9200 -p 19300:9300  -e "discovery.type=single-node" -e "bootstrap.memory_lock=true" -e "http.cors.enabled=true" -e "http.cors.allow-origin=*" -e ES_JAVA_OPTS="-Xms1g -Xmx1g"  elasticsearch:7.6.1

## 添加挂载
mkdir /usr/share/elasticsearch/data

docker run -d --name elasticsearch --net somenetwork -p 19200:9200 -p 19300:9300  -e "discovery.type=single-node" -e "bootstrap.memory_lock=true" -e "http.cors.enabled=true" -e "http.cors.allow-origin=*" -e ES_JAVA_OPTS="-Xms1g -Xmx1g"  -e LANG="C.UTF-8" -v /usr/share/elasticsearch/data  --restart=always  elasticsearch:7.6.1

docker logs elasticsearch

浏览器访问
宿主ip:19200
172.21.40.188:19200
在这里插入图片描述

kibana
docker pull kibana:7.6.1
docker run -d --name kibana --net somenetwork -p 5601:5601 --restart=always  kibana:7.6.1 

磁盘空间满了
先参考扩容
画个重点
创建加载点:mkdir /cm 挂载之后, 修改vi /etc/fstab 分区表文件,
在文件最后加上 /dev/sda3 /cm ext3 defaults 0 0 然后保存
不然重启后挂载盘就不见了别问我怎么知道

在参考移动docker路径
重启docker
执行镜像run报错
exec: “docker-proxy”: executable file not found in $PATH
参考错误处理
error: docker-runc not installed on system
参考错误处理

systemctl stop firewalld.service            #停止firewall
systemctl disable firewalld.service  

由于我修改了elasticsearch出口端口
需要进入kibana镜像修改kibana配置

docker exec -it kibana /bin/sh
cd /config
vi kibana.yml
#修改端口 修改汉化
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://172.21.40.184:19200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

exit

访问对应ip端口
http://172.21.40.184:5601/
可以使用了
重启镜像
分词器安装
找到对应版本分词器地址
ik分词器
进入容器

docker exec -it elasticsearch /bin/sh
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip

网实在太差 我选择离线安装
传下载好的安装包去虚拟机
进入容器内部

docker exec -it elasticsearch /bin/sh
cd plugins
mkdir ik
exit
docker cp /orcas/software/elasticsearch-analysis-ik-7.1.0.zip es:/usr/share/elasticsearch/plugins/ik/
docker exec -it elasticsearch /bin/sh
cd /plugins/ik/
unzip elasticsearch-analysis-ik-7.1.0.zip 
rm -rf elasticsearch-analysis-ik-7.1.0.zip 
#解决容器乱码问题
cat << EOF > /root/.vimrc
:set encoding=utf-8
:set fileencodings=ucs-bom,utf-8,cp936
:set fileencoding=gb2312
:set termencoding=utf-8
EOF
exit
docker restart elasticsearch

重启docker

打开kibana测试分析器
http://172.21.40.184:5601/app/kibana#/dev_tools/console
在这里插入图片描述

开始学习

分词器简单使用

已ik分词器为例:

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "最少切分"
}
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "最细力度切分"
}

在这里插入图片描述

ik分词器添加自己的字典

在这里插入图片描述
进入docker镜像

docker exec -it elasticsearch /bin/sh
cd plugins/ik/config/
#创建自己的字典文件
vi my.dic
#保存记得设置文件编码格式不然自定义字典不生效
:set fileencoding=utf-8
#编写自己的字典

在这里插入图片描述

IKAnalyzer.cfg.xml
#吧字典文件配置添加到 ext_dict

在这里插入图片描述
退出镜像重启镜像

exit

在这里插入图片描述
词典生效

基本命令

创建索引

PUT /索引名/类型名/文档id
{ 请求体}

PUT /helo/type1/1
{
  "name":"吴邪",
  "age":3
}

在这里插入图片描述
后期会慢慢废弃类型名 创建提示建议使用语法如下

/{index}/_doc/{id}
/{index}/_doc
/{index}/_create/{id}

基本数据类型

字符串类型 text 、 keyword
数值类型 long, integer, short, byte, double, float, half_float, scaled_float
日期类型 date
te布尔值类型 boolean
二进制类型 binary

设置映射规则 关键字 mappings(设置规则)、properties(设置属性)、type(设置类型)
相当于建表

PUT /hello2
{
  "mappings": {
  
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "long"
      },
      "birthday":{
        "type": "date"
      }
    }
  }
}

在这里插入图片描述

获取信息

获取索引信息: GET 索引(可以查看规则信息)
获取类型信息: GET 索引/类型(默认_doc)
获取某行具体文档数据: GET 索引/类型(默认_doc)/行id

GET hello2

在这里插入图片描述
不指定规则 直接设置数据也根据数据类型创建规则
在这里插入图片描述
在这里插入图片描述

通过_cat 可以获取一些es信息
GET _cat/health
GET _cat/indices?v

修改

修改可以用put 覆盖 返回值可以判断出时新增还是修改 版本号也会有体现 但是未提交字段数据会被清空

在这里插入图片描述

POST /索引/类型/文档id/_update
{“doc”:{“要修改属性”:“要修改值”}}
只修改对应字段 其他字段不影响

POST /hello3/_doc/1/_update
{
 "doc":{ 
   "name":"皮皮俑"
 }
}

在这里插入图片描述

kibana 提示语法过时 我们尝试使用新版语法
/{index}/_update/{id}

POST  /hello3/_update/1
{
 "doc":{ 
   "name":"皮皮俑修改"
 }
}

在这里插入图片描述

删除

删除索引信息: DELETE 索引(可以查看规则信息)
删除类型信息: DELETE 索引/类型(默认_doc)
删除某行具体文档数据: DELETE 索引/类型(默认_doc)/行id

例子:
在这里插入图片描述

查询

先添加部分数据

PUT /els/user/1
{
  "name":"",
  "age":4,
  "desc":""
  "tags":["","",""]
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单查询

GET /{index}/{type}/{id}(后期会舍弃type类型)
GET /{index}/_doc/{id}
GET /{index}/_search?q=name:{parm}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

复杂查询

字段匹配 某字段包含某语句的文档会呗查询出来
hit 查询出来的索引和文档信息
默认按照score排序 score 为匹配度
GET /{index}/_search
{
“query”: {
“match”: {
“FIELD”: “TEXT”
}
}
}
与query 并列添加,"_source": “{field}” 代表结果过滤
{
“query”: {
“match”: {
“FIELD”: “TEXT”
}
},
“_source”: “{field}”
}
排序 与query并列添加"sort": [{“FIELD”: {“order”: “desc”}}]
{
“query”: {
“match”: {
“FIELD”: “TEXT”
}
},
“sort”: [{“FIELD”: {“order”: “desc”}}],
“_source”: “{field}”
}
分页 与query并列添加"from": 0, “size”: 20
{
“query”: {
“match”: {
“FIELD”: “TEXT”
}
},
“sort”: [{“FIELD”: {“order”: “desc”}}],
“_source”: “{field}”,
“from”: 0,
“size”: 20
}
and 查询 bool must
GET /{index}/_search
{
“query”: {
“bool”: {
“must”: [
{
“match”: {
“FIELD”: “TEXT”
}
},{
“match”: {
“FIELD”: “TEXT”
}
}
]
}
}
}
or bool shoud
GET /{index}/_search
{
“query”: {
“bool”: {
“shoud”: [
{
“match”: {
“FIELD”: “TEXT”
}
},{
“match”: {
“FIELD”: “TEXT”
}
}
]
}
}
}
not bool must_not
GET /{index}/_search
{
“query”: {
“bool”: {
“must_not”: [
{
“match”: {
“FIELD”: “TEXT”
}
}
}
}
}
过滤器 与 filter 与must shoud must_not并列 可查询区间
,“filter”: {
“range”: {
“FIELD”: {
“gte”: 10,
“lte”: 20
}
}
}

倒排索引精确查询 term
term 直接精确查询
match 使用分词器
text 会被分词器解析 keyword 不会用分词器解析
GET {index}/_search
{
“query”: {
“term”: {
“FIELD”: “test”
}
}
}
如果是test 类型会被解析 如果是keyword类型的字段 不会解析 term 会完全匹配才能查的出来
高亮与query并列 指定高亮字段 可添加前后缀
“highlight”: {
“pre_tags”: “

”,
“post_tags”: “

”,
“fields”: {
“name”: {}
}
}
执行例子
GET /els/_search
{
  "query": {
    "match": {
      "name": "吴邪"
    }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "match": {
      "name": "吴邪"
    }
  },
  "_source":["name","desc"]
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "match": {
      "name": "吴邪"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ], 
  "_source":["name","desc"]
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "match": {
      "name": "吴邪"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ], 
  "_source":["name","desc"],
  "from": 0,
  "size": 2
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "吴邪"
          }
        },{
          "match": {
            "age": 3
          }
        }
      ]
    }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "吴邪"
          }
        },{
          "match": {
            "age": 66
          }
        }
      ]
    }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "吴邪"
          }
        },{
          "match": {
            "age": 66
          }
        }
      ]
    }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "age": 66
          }
        }
      ]
    }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "age": 66
          }
        }
      ],"filter": {
        "range": {
          "age": {
            "gte": 4,
            "lte": 80
          }
        }
      }
    }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
   "match": {
     "tags": "老 叔"
   }
  }
}

在这里插入图片描述

GET /els/_search
{
  "query": {
   "match": {
     "name": "吴"
   }
  },"highlight": {
    "pre_tags": "<p>",
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}

在这里插入图片描述

就这样了 要玩别的去了~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值