ElasticSearch

安装ElasticSearch

docker安装

命令:

docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
//版本要统一

下载elasticsearch:
在这里插入图片描述
检查一下是否下载成功:
在这里插入图片描述
下载kibana:
在这里插入图片描述
检查一下是否下载成功:
在这里插入图片描述
看虚拟机还有多少内存:
在这里插入图片描述
二、配置
依次执行

//创建文件夹
mkdir -p /mydata/elasticsearch/config
//创建文件夹
mkdir -p /mydata/elasticsearch/data

在这里插入图片描述
设置es可以被远程任何机器访问
进入到config文件夹下
在这里插入图片描述
执行:

echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

查看一下:
在这里插入图片描述
三、启动Elastic search
执行命令:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2 

命令解释:
–name elasticsearch :给容器起个名字叫elasticsearch。
-p 9200:9200 -p 9300:9300 :暴露两个端口,9200是用户和es的交互端口, 9300是es分布式集群状态下各个节点间的通信端口。
single-node :单节点运行。
-Xms64m -Xmx128m :设置es内存,初始64m,最大128m;真正项目中一般都是32g左右的;如果不设置es一启动会把内存全部占用,真个虚拟机就卡死了。
-v :目录挂载。
-d: 启动的时候用elasticsearch:7.4.2这个镜像。
在这里插入图片描述
启动成功后会得到一个容器的唯一序列号
设置权限:
因为没设置权限,所以现在es还不能被访问到,可以用docker logs elasticsearch看一下启动日志。
拒绝访问:
在这里插入图片描述
回到elasticsearch文件夹下,把这个文件夹下所有文件的的权限改为可读可写可执行:

//递归更改权限
chmod -R 777 /mydata/elasticsearch/

在这里插入图片描述
这样显示说明设置成功了

重新启动容器:
在这里插入图片描述
设置开机启动elasticsearch

docker update elasticsearch --restart=always

四、看es是否安装成功
在这里插入图片描述
浏览器输入ip+端口号,出现以下信息,说明安装成功了。

安装kibana

启动kibana:

// kibana指定了了ES交互端口9200   5600为kibana主页端口
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2

设置开机启动kibana:

docker update kibana  --restart=always

浏览器访问看是否启动成功:

192.168.56.10:5601

安装ik分词器

  • 准备工作:分词器地址,找到对应的7.4.2
https://github.com/medcl/elasticsearch-analysis-ik/releases
  • 在plugins目录下新建个文件夹ik
cd /mydata/elasticsearch/plugins/ik
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip

unzip elasticsearch-analysis-ik-7.4.2.zip

 - 给目录开权限
![在这里插入图片描述](https://img-blog.csdnimg.cn/db2196509b2748b4a5a91e81f77b0cf3.png)
变成了rwx,就证明了是可读可写可执行了
 - 重启
```javascript
docker restart elasticsearch

整合

作用

专门用来检索的非关系型数据库

使用场景

要检索的数据量很大,比如商品、日志。

基本概念

  • 索引(index)-数据库
  • 文档:行
  • 字段:列
  • 映射(mapping):设置ES 文档的使用规则(如何被存储和检索的)如:某个字段的数据类型、默认值、分析器、是否被索引等等。已经设置好的字段映射,不能更新,如果要更新只能创建新的索引,进行数据迁移。
  • 分片:相当于mysql的分表,把数据放在多张表里面。当创建一个索引的时候,可以指定想要的分片的数量。在索引创建后,不能改变主分片的数量,这个数目定义了这个索引能够存储 的最大数据量,默认情况下每个索引被分片 1 个主分片和 1 个复制分片。索引创建后副本分片的数量可以改变,读操作、搜索、返回数据可以同时被主分片 或 副本分片所处理,所以当你拥有越多的副本分片时,也将拥有越高的吞吐量。
    分片很重要,主要有两方面的原因:
    1)允许你水平分割 / 扩展你的内容容量。
    2)允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。
    至于一个分片怎样分布,它的文档怎样聚合和搜索请求,是完全由 Elasticsearch 管理的,对于作为用户的你来说,这些都是透明的,无需过分关心。
  • 副本(复制分片):分片的备份。
    复制分片之所以重要,有两个主要原因:
  1. 在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与
    原/主要(original/primary)分片置于同一节点上是非常重要的。
  2. 扩展你的搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。
  • 分配:将分片分配给某个节点的过程,包括分配主分片或者副本。如果是副本,还包含从主分
    片复制数据的过程。这个过程是由 master 节点完成的。

倒排索引

☆、正排索引:通过索引(主键id、数据编号)快速查找到当条数据,因为有索引所以比较快,要是想通过内容去查询当条数据,只能通过模糊匹配,每条数据都要去遍历一下,速度就很慢。
☆、倒排索引:强调的是关键字和索引的关联关系。
在这里插入图片描述
(关键词和id做关联)

restful操作

post-增 delete-删 改-put(不指定id会报错) 查-get

查询关键字

java查询关键字

  • 全量查询:matchAll
  • 关键字查询:term
  • 分页查询:from(第几条开始) size(每页显示多少条)
  • 组合查询:bool
  • 范围查询:range
  • 模糊查询:fuzzy
  • 高亮查询:terms
  • 聚合查询:aggregation

restful api查询关键字

  • g-2高级-ES:二、进阶检索
  • terms说明:filter里面的terms是查询一个字段匹配多个值;aggs里面的terms是查询值的分布
  • match和term:匹配查询时match-文本字段 term-数字字段
  • nested:嵌套查询
  • 是否贡献得分:贡献得分-must、should 不贡献得分-must_not、filter

字段映射设置

  • g-2高级-ES:三、Mapping字段映射
  • 重要关键字:type index doc_values

posman查询(结合谷粒整理完整,以guli为主)

  • 条件查询、分页查询、查询排序
  • 多条件查询、范围查询
  • 完全匹配、高亮查询
  • 聚合查询(统计)

谷粒es

场景

  • 上架的商品才可以在网站展示且可以被检索

程序设计

  • 方案
    在这里插入图片描述
  • 索引设计、创建
  • 上架商品
    1.查询出商品信息,封装
    2.查看库存是否存在
    3.保存到es
  • 检索

ELK

链接

面试

优化

写入

  • 采取 bulk 批量写入
  • 使用自动生成的 id

查询

  • 带路由查询
  • 禁用批量 terms(成百上千的场景)
  • 充分利用倒排索引机制,能 keyword 类型尽量 keyword

其它

  • 尚硅谷文档:优化

其它

  • 尚硅谷文档:面试
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值