乐优商城 Day06 (包括虚拟机下安装Elasticsearch ,jdk1.8,分词器,非教程)

本文详细介绍了乐优商城学习的第六天内容,主要涉及在Linux环境下安装Elasticsearch、JDK1.8,以及如何安装Kibana和分词器。在安装Elasticsearch时,文章讲解了其特点、安装步骤和验证过程。接着介绍了JDK1.8的安装。在安装Kibana和分词器后,文章阐述了如何操作Elasticsearch的索引,包括创建、映射配置、字段属性详解、增删改查操作,以及聚合aggregations的基本概念。最后,提到了使用Java代码操作Elasticsearch的可能性。
摘要由CSDN通过智能技术生成

乐优商城学习Day06:

注意:此次代码都是在第五天的基础上
第五天的链接如下:
https://blog.csdn.net/zcylxzyh/article/details/99655894

此次笔记内容主要为:
1.在linux下安装Elasticsearch
2.安装 jdk1.8
3.安装Kibana和分词器
4.操作索引(增删改查)
5.聚合aggregations
6.java代码操作索引


下面开始第六天的学习:

1.在linux下安装Elasticsearch

1.1 Elasticsearch介绍

用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品。

而商品的数量非常多,而且分类繁杂。如果能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。

面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如之前大家学习过的Solr。

不过今天,我们要讲的是另一个全文检索技术:Elasticsearch。

Elasticsearch具备以下特点:

  • 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
  • Restful风格,一切API都遵循Rest原则,容易上手
  • 近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。
1.2 Elasticsearch安装

首先文件上传

cd /home/leyou
在这里插入图片描述
使用FileZilla
在这里插入图片描述
在这里插入图片描述
然后解压
在这里插入图片描述
在这里插入图片描述
删除压缩包
在这里插入图片描述
修改权限
在这里插入图片描述
cd进入观察后cd退出来
在这里插入图片描述
重命名:
在这里插入图片描述
cd进入
在这里插入图片描述
修改
在这里插入图片描述
在这里插入图片描述
修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后创建目录
在这里插入图片描述
然后切换到leyou用户并进入bin(在root下转换账号不需要密码)
在这里插入图片描述
然后把当前的目录下权限全都变成leyou用户
在这里插入图片描述
然后修改上级目录下的文件
在这里插入图片描述
在最下面加
在这里插入图片描述
然后新开一个root账号的终端修改一些权限
在这里插入图片描述
在最下面添加
在这里插入图片描述
在这里插入图片描述
改为4096
在这里插入图片描述
在这里插入图片描述
在最下面加
在这里插入图片描述
输入命令让配置生效

sysctl -p
在这里插入图片描述
然后关闭终端
重新启动虚拟机
开启新终端
在执行下面命令
在这里插入图片描述
访问看到这个,说明配置成功
在这里插入图片描述
至此,第一部分结束。

2.安装jdk1.8

在这里插入图片描述
在这里插入图片描述
安装jdk链接

https://www.cnblogs.com/ocean-sky/p/8392444.html

至此,第二部分结束。


3.安装Kibana和分词器

3.1 安装Kibana

直接解压到相应的目录下
在这里插入图片描述
然后进入conf文件
在这里插入图片描述
注意:这里是虚拟机的地址。

3.2.安装分词器:

先关闭elastsearch
然后进入目录:
在这里插入图片描述
解压:
在这里插入图片描述
在这里插入图片描述
删除安装包:
在这里插入图片描述
修改目录名字:
在这里插入图片描述
进入目录
在这里插入图片描述
重新运行elasticsearch
在这里插入图片描述
结果:
在这里插入图片描述
至此,第三部分结束。


4.操作索引(增删改查)

4.1创建索引(库):

Elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求

创建索引的请求格式:

  • 请求方式:PUT
  • 请求路径:/索引库名
  • 请求参数:json格式:
    {
    “settings”: {
    “number_of_shards”: 3,
    “number_of_replicas”: 2
    }
    }
    • settings:索引库的设置
      • number_of_shards:分片数量
      • number_of_replicas:副本数量

用Insomnia
3个分片,两个备份:
在这里插入图片描述
用kibana
在这里插入图片描述

查询刚才创建的:
Get请求可以帮我们查看索引信息,格式:

GET /索引库名

在这里插入图片描述
在这里插入图片描述
或者,我们可以使用*来查询所有索引库配置。

删除:
删除索引使用DELETE请求

语法

DELETE /索引库名

示例:
在这里插入图片描述
再次查看heima2:
在这里插入图片描述
当然,我们也可以用HEAD请求,查看索引是否存在:
在这里插入图片描述

4.2 映射配置

索引有了,接下来肯定是添加数据。但是,在添加数据之前必须定义映射。

什么是映射?

映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等

只有配置清楚,Elasticsearch才会帮我们进行索引库的创建(不一定)

创建映射字段:

语法

请求方式依然是PUT

PUT /索引库名/_mapping/类型名称
{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}
  • 类型名称:就是前面将的type的概念,类似于数据库中的不同表
    字段名:任意填写 ,可以指定许多属性,例如:
  • type:类型,可以是text、long、short、date、integer、object等
  • index:是否索引,默认为true
  • store:是否存储,默认为false
  • analyzer:分词器,这里的ik_max_word即使用ik分词器

示例:


PUT /heima/_mapping/goods
{
   
  "properties": {
   
    "title": {
   
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images": {
   
      "type": "keyword",
      "index": "false"
    },
    "price": {
   
      "type": "float"
    }
  }
}

在这里插入图片描述
查看映射关系:
语法:

GET /索引库名/_mapping

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

4.3 字段属性详解

type :

Elasticsearch中支持的数据类型非常丰富:

我们说几个关键的:

  • String类型,又分两种:
    • text:可分词,不可参与聚合
    • keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合
  • Numerical:数值类型,分两类
    • 基本数据类型:long、interger、short、byte、double、float、half_float
    • 浮点数的高精度类型:scaled_float
      • 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
  • Date:日期类型
    elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。

index :

index影响字段的索引情况。

  • true:字段会被索引,则可以用来进行搜索。默认值就是true
  • false:字段不会被索引,不能用来搜索

index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。

但是有些字段是我们不希望被索引的,比如商品的图片信息,就需要手动设置index为false。


store :

是否将数据进行额外存储。

在学习lucene和solr时,我们知道如果一个字段的store设置为false,那么在文档列表中就不会有这个字段的值,用户的搜索结果中不会显示出来。

但是在Elasticsearch中,即便store设置为false,也可以搜索到结果。

原因是Elasticsearch在创建文档索引时,会将文档中的原始数据备份,保存到一个叫做_source的属性中。而且我们可以通过过滤_source来选择哪些要显示,哪些不显示。

而如果设置store为true,就会在_source以外额外存储一份数据,多余,因此一般我们都会将store设置为false,事实上,store的默认值就是false。


4.4 新增数据:

随机生成id

通过POST请求,可以向一个已经存在的索引库中添加数据。

语法:

POST /索引库名/类型名
{
    "key":"value"
}

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

  • _source:源文档信息,所有的数据都在里面。
  • _id:这条文档的唯一标示,与文档自己的id字段没有关联
POST /heima/goods/
{
   
    "title":"小米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":2699.00
}

自定义id:
如果我们想要自己新增的时候指定id,可以这么做:

POST /索引库名/类型/id值
{
    ...
}

示例:

在这里插入图片描述

POST /heima/goods/1
{
   
    "title":"大米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":2899.00
}

查询刚才新增的:
查所有:
在这里插入图片描述
查id为1
在这里插入图片描述
智能判断:

在学习Solr时我们发现,我们在新增数据时,只能使用提前配置好映射属性的字段,否则就会报错。

不过在Elasticsearch中并没有这样的规定。

事实上Elasticsearch非常智能,你不需要给索引库设置任何mapping映射,它也可以根据你输入的数据来判断类型,动态添加数据映射。

测试一下:

在这里插入图片描述


POST /heima/goods/3
{
   
    "title":"超米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":2899.00,
    "stock": 200,
    "saleable":true,
    "subTitle":"呵呵"
}

查询一下:
在这里插入图片描述

4.5 修改数据:

把刚才新增的请求方式改为PUT,就是修改了。不过修改必须指定id,

  • id对应文档存在,则修改
  • id对应文档不存在,则新增

先增加一个:

在这里插入图片描述
查询:
在这里插入图片描述
修改:
在这里插入图片描述

PUT /heima/goods/2
{
   
    "title":"超大米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":3899.00,
    "stock": 100,
    "saleable":true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值