一、es安装
1、首先确保安装jdk
Linux 检测是否安装jdk命令: java -version
此处是11.0.18
2、官网下载es 选的8.8.2
tar -zxvf elasticsearch-8.8.2-linux-x86_64.tar.gz -C /opt
3、创建普通用户
useradd icoding #新增icoding用户
passwd icoding #为icoding用户设置密码
userde1 -r icoding #如果错了可以删除再加
#为普通用户授权 否则无法运行es
cd /opt/
chown -R icoding:icoding elasticsearch-8.8.2
4、修改elasticsearch.yml文件
vim /opt/elasticsearch-8.8.2/config/elasticsearch.yml
cluster.name: icoding-course
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
5、修改配置文件
新创建的icoding用户最大可创建文件数太小,最大虚拟内存太小,切换到root用户,编辑下列配置文件,添加类似如下内容
#切换到root用户
su root
vi /etc/security/limits.conf
#在文件末尾中增加下面内容
icoding soft nofile 65536
icoding hard nofile 65536
vi /etc/security/limits.d/90-nproc.conf
在文件末尾中增加下面内容
icoding soft nofile 65536
icoding hard nofile 65536
- hard nproc 4096
#注:*代表Linux所有用户名称
vim jvm.options
vi /etc/sysctl.conf
在文件中增加下面内容
vm.max_map_count=655360
重新加载,输入下面命令:
sysctl -p
6、启动elasticsearch
su icoding
#切换到icoding用户启动
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch #启动
浏览器输入(自己虚拟器ip ifconfig命令查看)
#暂时关闭防火墙
systemctl stop firewalld
#或者
#永久设置防火墙状态
systemctl enable firewalld.service #打开防火墙永久性生效,重启后不会复原
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原
#以上命令关闭防火墙不管用试试下面这行
service iptables stop
二、Es_head安装
node环境
1、进入/usr/local/src ,把下载的node文件放在。
cd /usr/local/src
2、下载nodejs
(1)、进入node的中文站点 http://nodejs.cn/download/ 并选择需要安装的版本链接
(2)、使用wget 命令进行下载, 如:
wget https://npm.taobao.org/mirrors/node/v10.16.0/node-v10.16.0-linux-x64.tar.xz
(3)、使用tar对下载好的压缩包进行解压
tar xvf node-v10.16.0-linux-x64.tar.xz
(4)、重命令解压后的文件夹名,感觉有点不长了。把它命名为 nodejs
mv node-v10.16.0-linux-x64 nodejs
3、全局使用node与npm
ln -s /usr/local/src/nodejs/bin/node /usr/local/bin/node
ln -s /usr/local/src/nodejs/bin/npm /usr/local/bin/npm
Tips: ln的功能是为某一个文件在另外一个位置建立一个同不的链接。具体用法是:ln -s 源文件 目标文件
4、配置环境变量:/usr/local/src/nodejs/bin
(1)、切换到用户根目录
cd ~
(2)、修改用户环境变量文件
vi .bash_profile
5、测试是否安装成功。
node -v
会输出:v10.16.0
npm -v
会输出:6.9.0
elasticsearch-head下载
1、下载
https://codeload.github.com/mobz/elasticsearch-head/zip/refs/heads/master
unzip elasticsearch-head-master.zip &>/dev/null
2、在elasticsearch-head-master里执行以下语句:
npm install
3、启动
#依赖安装好之后直接启动
npm run start
但是这种方式启动关闭shell页面后就停止了 换一种方式启动
nohup npm run start &
如果想要停止,使用下面的方式:
lsof -i:9100 查出端口运行的进程id
kill -9 进程id
常见问题
正常情况下启动后连接是显示失败的:集群健康值: 未连接
这种情况需要修改几处
1.es修改:
http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length
2、elasticsearch-head 修改
修改Gruntfile.js
cd /usr/local/elasticsearch-head-master
vim Gruntfile.js
找到最后connect->server->options中添加hostname:hostname: ‘*’
三、Kibana安装
1、下载
Kibana官方下载地址:https://www.elastic.co/cn/downloads/kibana
tar –zxvf kibana-8.8.2-linux-x86_64.tar.gz–C /opt/
2、修改配置
到kibana安装目录的config下,编辑kibana.yml配置文件,添加如下配置:
server.port: 5601
#配置本机ip
server.host: "0.0.0.0"
#配置es集群url
elasticsearch.url: "http://localhost:9200"
3、Kibana 启动
./kibana
http:// localhost:5601
四、Dsl语句学习
文档:一条数据就是一个文档,es中是Json格式
字段:Json文档中的字段
索引:同类型文档的集合
映射:索引中文档的约束,比如字段名称、类型
elasticsearch与数据库的关系:
•数据库负责事务类型操作
•elasticsearch负责海量数据的搜索、分析、计算
1、索引库操作
mapping常见属性有哪些?
•type:数据类型
•index:是否索引
•analyzer:分词器
•properties:子字段
type常见的有哪些?
•字符串:text、keyword
•数字:long、integer、short、byte、double、float
•布尔:boolean
•日期:date
•对象:object
(1)创建索引库
ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语法如下:
(2)查看、删除索引库
(3)修改索引库
2、文档操作
(1)添加文档
(2)查看、删除文档
(3)修改文档
2、DSL查询语法
DSL Query的分类
Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。
常见的查询类型包括:
•查询所有:查询出所有数据,一般测试用。
例如:match_all
•全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。
例如:•match_query •multi_match_query
•精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。
例如:•ids •range •term
•地理(geo)查询:根据经纬度查询。
例如:•geo_distance •geo_bounding_box
•复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。
例如:•bool •function_score
3、全文检索查询
match查询:全文检索查询的一种,会对用户输入内容分词,然后去倒排索引库检索,语法:
multi_match:与match查询类似,只不过允许同时查询多个字段,语法:
精确查询
精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。常见的有:
•term:根据词条精确值查询
•range:根据值的范围查询
复合查询Boolean Query
布尔查询是一个或多个查询子句的组合。子查询的组合方式有:
•must:必须匹配每个子查询,类似“与”
•should:选择性匹配子查询,类似“或”
•must_not:必须不匹配,不参与算分,类似“非”
•filter:必须匹配,不参与算分