elasticsearch5x学习1.0

首先这篇文章学了会让你知道如下内容

  1. 什么是es
  2. es的安装
  3. es的相关概念
  4. es的使用
  5. es的集群

什么是es?

es全称为ElasticSearch,是一个具有即时搜索功能的服务器,基于Lucene,为什么会有它的出现,如果对数据库频繁的进行查询,会造成查询过慢,所以有了es,可以快速地进行关键词字符串搜索,并且可以实现高亮。

solr和es的区别

  1. 首先solr支持多种格式的文本存储,而es只支持json格式
  2. solr需要zoonkeeper进行分布式管理,而es自身带有分布式协调功能
  3. 在实时搜索方面,es优于solr

es的安装

es是也是一个服务器,大家可以选择不同的安装方式,可以官网下载压缩包进行解压启动,或者使用Docker进行安装,这里我们使用windows压缩解压安装。
官方网址:https://www.elastic.co/products/elasticsearch
这里我下载的是es5.6.8版本,es更新很频繁现在已经7x了,不过es5版本相对来说更稳定。
解压如下:
在这里插入图片描述
进入bin目录点击
在这里插入图片描述
即可启动成功,浏览器打开http://localhost:9200看到如图返回,即可
在这里插入图片描述

es的相关概念

  1. 索引 一个索引相当于一个数据库
  2. 类型 一个类型相当于一个表
  3. 文档 一个文档相当于表中的一行数据
  4. 映射 可以设置字段的类型,是否索引,是否存储,是否分词,以及设置分词器
  5. 字段 相当于数据库表的一列
  6. 分片 将一个索引库划分多片,如果不分片,当数据多了,访问速度就慢了,可以让数据对应一个索引的多个片,分片查询
  7. 复制 为了高可用,当一个索引库的数据挂掉,复制的数据同样可以进行查询

es的可视化插件head

安装这个插件,可以方便的查看索引库,数据,进行查询。
如下就是head插件启动后的样子,需要有node.js环境,后续我会专门出一篇文章教大家安装head插件
在这里插入图片描述

es的使用

这里我们使用postman工具进行es的相关操作,大家自行安装。
需要注意的是es有两个端口号 一个是9200 一个是9300 前者是http端口,后者是tcp端口

  1. 创建index索引库 创建的时候就创建mapping
    在这里插入图片描述
    其中blog1是索引的名称,发送的实体是创建映射关系,其中article是type,还有id,title,content是字段,其中字段下的type,store,index,analyzer,分别是字段的类型,是否存储,是否索引,分词器的类型。默认存储,默认分词,默认使用标准分词器。
    我们设置id不用索引也就是不用分词。
  2. 创建索引库 创建成功之后再设置mapping
    在这里插入图片描述
    发送一个put请求,之后创建成功索引之后,再来设置mapping
    在这里插入图片描述
    发送一个post请求,其中hello是类型,_mapping标志设置mapping信息。
  3. 删除索引
    在这里插入图片描述
    delete请求,后面跟索引名字就可删除
  4. 创建文档
    在这里插入图片描述
    格式:http://localhost:9200/index/type/_id
    其中1是指的document的id,一般和数据的id一致。
    在这里插入图片描述
  5. 更新文档
    更新文档和存储文档是一样的,不过更新是先删除后存储。
    在这里插入图片描述
    在这里插入图片描述
    可以看到返回结果是updated
  6. 删除文档
    在这里插入图片描述
    url指定到对应文档id即可删除。
  7. 查询文档
    根据id进行查询
    在这里插入图片描述
    其中_source是返回结果
    在这里插入图片描述
    查看标准分词器的结果是将查询文本 分成每一个汉字,效果并不好,之后我们安装ik分词器插件,(安装步骤再下面)重新创建mapping信息,将tilte和content的analyzer改为ik_max_word。再来进行查询
    在这里插入图片描述
  8. 根据query_string进行查询
    在这里插入图片描述
    查询结果
    在这里插入图片描述
    query_string是将查询字符串分词之后再进行查询。
  9. 根据term关键词查询
    在这里插入图片描述
    请求: http://localhost:9201/blog1/article/_search
    _search是查询标志,可以看到查询到了,如果查询客户端的使用是查询不到的,需要进行query_string进行查询。因为在分词结果中没有客户端的使用这个分词结果。
    在这里插入图片描述

安装ik分词器

ik分词器对中文分词友好,采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。下面教大家怎么安装ik分词器
下载压缩包解压放到es服务器的plugins目录即可
在这里插入图片描述
重新启动服务器即可。
ik分词器采用了两种分词算法

  • ik_smart算法 最少切分
  • ik_max_word算法 最细粒度划分
  • 我们可以试一下这两种有什么区别 如果使用标准分词器 会将中文汉字一个一个拆分
  • 使用ik_smart算法

结果如下

  • 使用ik_max_word算法
    在这里插入图片描述
    ik_max_word最后将程序员分成了程序和员两个词,所以说它是细粒度算法。

es的集群

集群相关概念
  1. cluster 集群 一个集群下面有多个结点
  2. node 结点 一个节点相当于一个服务器,属于一个集群
  3. 分片和复制 shards&replicas 索引分片后在不同的结点,默认分片数量5,复制一份,复制后的每一片也分布在不同的结点。
es如何进行集群
  • 新建一个文件夹es_cluster,拷贝三份es服务器在文件夹下
  • 删除es下的data目录下的数据,此目录存储索引数据
  • 修改config目录下的配置文件elasticsearch.yml在这里插入图片描述
  • 加入以下内容 用head插件连接es服务器的时候,需要配置允许跨域访问,因为head插件的端口是9100,访问es的端口为9200,所以需要设置。
#安装了head插件之后 配置允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
#集群环境配置
cluster.name: my-elasticsearch
node.name: node-1
network.host: 127.0.0.1
http.port: 9201
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]

接下来修改剩下的两个配置信息,只需要修改node-name和http.port与transport.tcp.port即可。

  • 然后依次启动es 打开head插件 连接任意一个结点,如下图
    -
    星星标志代表主节点 就是第一个启动的,圆形代表副结点。
    分了5片,复制一份,共10片,分布在不同的节点,这里我之前创建了blog1,所以会显示索引信息。
    加粗的数字 代表是主数据(primary为true),不加粗的是复制数据/拷贝数据
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值