ElasticSearch安装

ElasticSearch安装

学习视频

声明:JDK1.8 ,最低要求! ElasticSearch 客户端,界面工具!
Java开发,ElasticSearch 的版本和我们之后对应的 Java 的核心jar包! 版本对应!JDK 环境是正常

下载地址:ElasticSearch官网下载

官网下载巨慢,翻墙,网盘中下载即可

crul命令

访问一个网页
curl www.baidu.com
curl -o tt.html www.baidu.com
显示相应头信息
curl -i www.baidu.com
显示一次HTTP请求的通信过程
curl -v www.baidu.com
执行GET/POST/PUT/DELETE操作
curl -X GET/POST/PUT/DELETE url

window 下安装!

1.解压就可以使用了!

在这里插入图片描述

2.熟悉项目
bin 启动文件
config 配置文件
log4j2 日志配置文件
jvm.options java 虚拟机相关的配置
elasticsearch.yml  elasticsearch 的配置文件! 默认 9200 端口! 跨域!
lib   相关jar包
logs   日志!
modules 功能模块
plugins 插件!

在这里插入图片描述

  • 启动之后会开启9200 和9300端口

    ElasticSearch的9200和9300端口的区别

    9200用于外部通讯,基于http协议,程序与es的通信使用9200端口。

    9300jar之间就是通过tcp协议通信,遵循tcp协议,es集群中的节点之间也通过9300端口进行通信。

在这里插入图片描述

  • 浏览器查看
    在这里插入图片描述
安装ES的图像化界面插件
1.下载head插件:

head下载

将elasticsearch-head-master压缩包解压到任意目录,但是要和elasticsearch安装目录区别开

2. 安装nodejs
  • 下载对应你系统的Node.js版本https://nodejs.org/en/download/

可以通过cmd控制台输入: node -v 查看版本号

启动grunt server

  • 安装cnpm提示下载速度
1. *//在node中执行*
2. npm install -g cnpm --registry=https:*//registry.npm.taobao.org*
  • 直接启动会报错,需将grunt安装为全局命令, Grunt是基于Node.js的项目构建工具
D:\install\elasticsearch\elasticsearch-head-master\elasticsearch-head-master>npm install -g grunt-cli
  • grunt server出现错误error:Unable to find local grunt

    解决方法:进入elasticsearch-head-master启动head,输入命令

npm install
grunt serve 或 npm run start
  • 出现下图表示成功

在这里插入图片描述

3.连接elasticsearch

打开浏览器,输入http://localhost:9100,看到如下页面:
在这里插入图片描述

4、解决跨域问题

连接测试发现,存在跨域问题:需要修改ElasticSearch的config目录下的配置文件:config/elasticsearch.yml,增加以下两句命令:

http.cors.enabled: true
http.cors.allow.origin: "*"

然后重启ElasticSearch服务。

初学,就把es当做一个数据库! (可以建立索引(库),文档(库中的数据!))
这个head我们就把它当做数据展示工具!我们后面所有的查询,Kibana!

了解 ELK

ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic
Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框
架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可
见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。Logstash是ELK
的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出
到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好
的页面展示出来,提供实时分析的功能。
市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用
于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非
唯一性。

在这里插入图片描述

安装kibana

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索
引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理
解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查
询动态。设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动
Elasticsearch索引监测。

kibana官网
Kibana 版本要和 Es 一致!

下载完毕后,解压也需要一些时间!是一个标准的工程!
好处:ELK 基本上都是拆箱即用!

启动测试

1、解压后端的目录

在这里插入图片描述

  • 启动(5601端口)

在这里插入图片描述

  • 访问测试
  • 开发工具! (Post、curl、head、谷歌浏览器插件测试!)

在这里插入图片描述

  • 汉化!自己修改kibana配置即可! zh-CN!
    在这里插入图片描述

linux下安装!


  • 保证jdk1.8以上,设置环境变量
  • 不能用root用户启动
    解决方法:启动时 ./elasticsearch -Des.insecure.allow.root=true
    或 修改bin/elasticsearch,加上ES_JAVA_OPTS属性:ES_JAVA_OPTS="-Des.insecure.allow.root=true" 该方法貌似没用

使用非root用户启动和停止

# 添加用户组
groupadd eszu
useradd esyonghu -g eszu -p 123456
# 进入到es安装目录
chown -R esyonghu:eszu elasticsearch-6.2.4
su esyonghu
# 进入安装目录的bin下 后台启动
./elasticsearch -d
# 查看
curl 127.0.0.1:9200

若启动出现以杀死 需要调整JVM的内存:
ES_JAVA_OPTS="-Xms512 -Xmx512m"

  • 处理第一个错误:
    vim /etc/security/limits.conf 文件最后加入
esyonghu soft nofile 65536
esyonghu hard nofile 65536
esyonghu soft nproc 4096
esyonghu hard nproc 4096
  • 处理第二个错误:
    进入limits.d目录修改配置文件
    vim /etc/security/limits.d20-nproc.conf 修改为esyonghu soft nproc 4096

  • 处理第三个错误:

vim /etc/sysctl.conf
vm.max_map_count=655360

执行以下命令生效: sysctl -p

修改 config下ip

network.host:10.60.0.22
http.port:9200

关闭防火墙:
systemctl stop firewall.service

安装中文分词器ik

下载ik 版本和es的一致

先安装mvn
mvn -v
cd /usr/local/elasticsearch-analysic-ik-master 编译
mvn clean install -Dmaven.test.skip=true
之后会在target/relleases/ 下生成zip包

把zip包放到es的plugins/ik下 (mkdir ik),解压zip后会生成elasticsearch文件夹 ,还需要把里面的东西直接放到ik文件夹下
mv elasticsearch/* ./
rm -rf ./elasticsearch

安装Head插件

先装git和 node
再从github上下载head

npm install -g grunt-cli
# 进入head目录下 安装
cnpm install

vi Gruntfile.js
在connect-->server-->option下面添加:hostname:"*", 允许所有ip可以访问

vi /usr/local/elasticsearch-head/_site/app.js
将this.base_uri=this.confg.base_uri||this.prefs.get("app-base_uri")||"http://localhost:9200";中的localhost修改成你es的服务器地址
解决跨域问题

连接测试发现,存在跨域问题:需要修改ElasticSearch的config目录下的配置文件:config/elasticsearch.yml,增加以下两句命令:

http.cors.enabled: true
http.cors.allow.origin: "*"
# 开启防火墙
systemctl start firewalld.service
# 打开head端口9100
firewall-cmd --zone=public --add-port=9100/tcp --permanent
# 重启防火墙
firewall-cmd --reload

启动elasticsearch
启动elasticsearch-head
cd /usr/local/elastcisearch-head/node_modules/grunt/bin/grunt server
关闭防火墙:
systemctl stop firewall.service
访问head

安装kibana

下载kibana解压后
进入 /usr/local/kibana/config

server.host: "192.168.25.133"
elasticsearch.url: "http://192.168.25.133:9200"

kibana默认端口为5601

# 开启防火墙
systemctl start firewalld.service
# 打开head端口9100
firewall-cmd --zone=public --add-port=5601/tcp --permanent
# 重启防火墙
firewall-cmd --reload

启动kibana
进入安装目录下bin中启动
./kibana
浏览器访问:http://192.168.25.133:5601

ES的核心概念


1、索引
2、字段类型(mapping)
3、文档(documents)

参考网盘文档

IK分词器插件

什么是IK分词器?

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把
数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个
词,比如 “我爱狂神” 会被分为"我",“爱”,“狂”,“神”,这显然是不符合要求的,所以我们需要安装中文分词
器ik来解决这个问题。
如果要使用中文,建议使用ik分词器!
IK提供了两个分词算法:ik_smartik_max_word,其中 ik_smart 为最少切分,ik_max_word为最细
粒度划分!一会我们测试!

安装

1、下载ik
2、下载完毕之后,放入到我们的elasticsearch 插件即可!
在这里插入图片描述

3、重启观察ES,可以看到ik分词器被加载了!
在这里插入图片描述

4、elasticsearch-plugin 可以通过这个命令来查看加载进来的插件

命令 elasticsearch-plugin list
在这里插入图片描述

5、使用kibana测试!(添加ik插件后重启kibanan)

查看不同的分词效果

其中ik_smart为最少切分

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "中国共产党狂神说"
}

在这里插入图片描述

ik_max_word为最细粒度划分!穷尽词库的可能!字典!

在这里插入图片描述

发现问题:狂神说被拆开了!
这种自己需要的词,需要自己加到我们的分词器的字典中!

ik 分词器增加自己的配置!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eUAx5Qq2-1593345925082)(安装ES的图像化界面插件.assets/image-20200628093109835.png)]

关闭es 和kibana 重启es,可以看到kuang.dic被加载了
在这里插入图片描述
可以看到2种查询方式都没有分开狂神说

在这里插入图片描述

Rest风格说明


一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交
互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
基本Rest命令说明:

methodurl地址描述
PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)
POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档id)
POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETElocalhost:9200/索引名称/类型名称/文档id删除文档
GETlocalhost:9200/索引名称/类型名称/文档id查询文档通过文档id
POSTlocalhost:9200/索引名称/类型名称/_search查询所有数据

关于索引的基本操作

1、创建一个索引!

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

在这里插入图片描述

完成了自动增加了索引!数据也成功的添加了,这就是我说大家在初期可以把它当做数据库学习的原
因!
在这里插入图片描述

3、那么 name 这个字段用不用指定类型呢。毕竟我们关系型数据库 是需要指定类型的啊 !
字符串类型

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

4、指定字段的类型

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

在这里插入图片描述
获得这个规则! 可以通过 GET 请求获取具体的信息!

GET test2
在这里插入图片描述

5、查看默认的信息

_doc为默认类型(推荐使用)

  PUT /test3/_doc/1
  {
    "name":"狂神说",
    "age":13,
    "birth":"1997-01-05"
  }
  
  • 如果自己的文档字段没有指定,那么es 就会给我们默认配置字段类型!

扩展: 通过命令 elasticsearch 索引情况! 通过get _cat/ 可以获得es的当前的很多信息!

GET _cat/indices?v
在这里插入图片描述

修改 提交还是使用PUT 即可! 然后覆盖!最新办法!

曾经!和 现在的方法!

在这里插入图片描述

删除索引

通过DELETE 命令实现删除、 根据你的请求来判断是删除索引还是删除文档记录!
使用RESTFUL 风格是我们ES推荐大家使用的!

DELETET test1

关于文档的基本操作(重点)


参考文档

基本操作

1.添加数据
PUT /kuangshen/user/1
{
 "name": "狂神说",
 "age": 23,
 "desc": "一顿操作猛如虎,一看工资2500",
 "tags": ["技术宅","温暖","直男"]
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szsFdFuD-1593345925086)(安装ES的图像化界面插件.assets/image-20200628145212854.png)]2、获取数据 GET
GET kuangshen/user/1

在这里插入图片描述

3、更新数据 PUT

在这里插入图片描述

4、Post _update , 推荐使用这种更新方式!

在这里插入图片描述

5.简单地搜索!
GET kuangshen/user/1

简单的条件查询,可以根据默认的映射规则,产生基本的查询!
在这里插入图片描述
在这里插入图片描述

6.复杂操作搜索 select ( 排序,分页,高亮,模糊查询,精准查询!)

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

输出结果,不想要那么多!
在这里插入图片描述

排序
在这里插入图片描述
分页

在这里插入图片描述

数据下标还是从0开始的,和学的所有数据结构是一样的!
/search/{current}/{pagesize}

布尔值查询

must (and),所有的条件都要符合 where id = 1 and name = xxx
在这里插入图片描述

should(or),所有的条件都要符合 where id = 1 or name = xxx
在这里插入图片描述
must_not (not)
在这里插入图片描述

过滤器 filter
在这里插入图片描述

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于!

在这里插入图片描述

匹配多个条件!
在这里插入图片描述

精确查询!

term 查询是直接通过倒排索引指定的词条进程精确查找的!
关于分词:

  • term ,直接查询精确的
  • match,会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询!)

两个类型 text keyword

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

多个值匹配精确查询

在这里插入图片描述

高亮查询!

在这里插入图片描述

在这里插入图片描述

这些其实MySQL 也可以做,只是MySQL 效率比较低!

  • 匹配
  • 按照条件匹配
  • 精确匹配
  • 区间范围匹配
  • 匹配字段过滤
  • 多条件查询
  • 高亮查询

集成SpringBoot

1、找到原生的依赖

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version>7.6.2</version>
</dependency>

2、找对象

3、分析这个类中的方法即可!
配置基本的项目
问题:一定要保证 我们的导入的依赖和我们的es 版本一致

HnNR-1593345925098)]

高亮查询!

在这里插入图片描述
在这里插入图片描述
[外链图片转存中…(img-5LQlKuZE-1593345925099)]

这些其实MySQL 也可以做,只是MySQL 效率比较低!

  • 匹配
  • 按照条件匹配
  • 精确匹配
  • 区间范围匹配
  • 匹配字段过滤
  • 多条件查询
  • 高亮查询

集成SpringBoot

1、找到原生的依赖

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version>7.6.2</version>
</dependency>

2、找对象

3、分析这个类中的方法即可!
配置基本的项目
问题:一定要保证 我们的导入的依赖和我们的es 版本一致
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值