2021 版本 ElasticSearch 学习手册!

本篇文章是 ElasticSearch 这个热门技术的基础知识手册,一共 20 张图,1.5w字,图文结合,代码讲解。欢迎大家,点赞、收藏,更多相关优质文章可以点击下面的链接,都是此类的干货。

下面是本文章的目录,可以先收藏、转发,有空在看。

ElasticSearch 入门

  • 新增数据

  • 查询数据

  • 更新数据

  • 删除数据

  • 批量操作

ElasticSearch 高级使用

  • 聚合操作

  • 映射操作

  • 分词操作

Spring Boot 整合 ElasticSearch

  •   ...

本篇文章的内容均以 Docker 环境为基础。

首先拉取镜像:

docker pull elasticsearch:7.4.2

然后下载kibana,这是一个可视化检索数据的工具:

docker pull kibana:7.4.2

创建两个文件夹用作数据卷:

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

创建一个配置文件并写入配置,使得外部机器能够访问 elasticsearch:

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

这样就可以启动 elasticsearch 了:

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

其中开放的 9200 端口为向elasticsearch发送请求的端口,而 9300 为集群环境下elasticsearch之间互相通信的端口;"discovery.type=single-node" 表示以单节点运行elasticsearch;ES_JAVA_OPTS="-Xms64m -Xmx128m" 用于指定elasticsearch的内存占用,而且必须指定,否则elasticsearch将占用系统的全部内存;最后设置elasticsearch的挂载点。

若是启动报错:

"Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes",

这是因为我们的挂载点权限不足导致的,此时修改挂载点权限重新启动elasticsearch即可:

chmod 777 /mydata/elasticsearch/data/

然后启动 Kibana:

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://www.ithui.top:9200 -p 5601:5601 -d kibana:7.4.2

启动完成后访问 http://www.ithui.top:5601/:

ElasticSearch 入门

ElasticSearch 通过接收请求的方式来对数据进行处理,接下来对elasticsearch进行一个简单的入门。首先是 _cat 请求,通过该请求能够查询elasticsearch的一些基本信息,具体如下:

  • GET    /_cat/nodes:查看所有节点

  • GET    /_cat/health:查看elasticsearch的健康状况

  • GET    /_cat/master:查看主节点

  • GET    /_cat/indices:查看所有索引

比如查看 elasticsearch 的所有节点,则需要发送 http://www.ithui.top/_cat/nodes 请求,结果如下:

若是想查看 elasticsearch 的健康状态,则发送 http://www.ithui.top:9200/_cat/health 请求,结果如下:

新增数据

elasticsearch通过接收PUT和POST请求来新增数据,然而在新增数据之前,我们需要来了解elasticsearch中的几个概念:

  • 索引

  • 类型

  • 文档

  • 属性

我们可以类比一下mysql中的概念来更形象地理解它们。在mysql中,若是想保存一条数据,我们首先需要创建数据库,然后在数据库中创建数据表,最后将数据作为一条记录插入数据表;而elasticsearch中的索引就相当于mysql中的数据库,类型就相当于数据表,文档就相当于一条记录。

所以,若是想在elasticsearch中新增一条数据,我们就需要指定这条数据放在哪个索引的哪个类型下,该条数据也被称为一个文档,而且这些数据是json格式的,json中的键被称为属性。

在elasticsearch中新增一条数据我们有更加专业的说法,称其为 索引一个文档 ,接下来就可以发送一个请求 http://www.ithui.top:9200/customer/external/1 ,该请求表示向customer索引下的external文档存放一个标识为1的数据,数据可以存放在请求体中携带过去:

我们来分析一下该请求的返回结果:

{
    "_index": "customer",
    "_type": "external",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

其中以 _ 开头的属性称为元数据,它表示的是elasticsearch中的基本信息,比如 _index 表示当前索引;_type 表示当前类型;_id 表示当前数据的标识;_version 表示版本;result 表示当前操作的状态,这里是新建状态,若是索引的文档已经存在,则状态为更新状态。

PUT请求方式同样也能够新增数据,然而它与POST有些许不同,POST能够不携带id进行数据的保存,比如:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值