Elasticsearch-快速入门

全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

基本概念

Index(索引)

Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。

  • 动词,相当于mysql的insert
  • 名词,相当于mysql的database

Type(类型)

在 Index(索引)中,可以定义一个或多个类型。
类似于 MySQL 的 Table,每一种类 型的数据存放在一起。

比如把一条数据存在ES的某个index下的某个type下,类型和索引通俗点即为 index为数据库,type为数据表,存在某个数据库的某张表下

在Elasticsearch6.0之后,Type 类型被移除。
在这里插入图片描述

Document(文档)

保存在某个 Index(索引)下,某种 Type(类型)的一个数据,Document(文档)是JSON格式的,Document 就像是 MySQL 中某个 Table 里面每一行的数据,字段就是Document里的属性。
在这里插入图片描述
Document(文档)就相当于是在数据库中的数据,文档里面的属性,就相当于列名,格式为json

在这里插入图片描述
一个词拆分成多个关键词

Docker安装Elasticsearch、Kibana

1. 下载镜像文件

# 存储和检索数据
docker pull elasticsearch:7.4.2

# 可视化检索数据
docker pull kibana:7.4.2

2. 配置挂载数据文件夹

# 创建配置文件目录
mkdir -p /mydata/elasticsearch/config

# 创建数据目录
mkdir -p /mydata/elasticsearch/data

# 将/mydata/elasticsearch/文件夹中文件都可读可写
chmod -R 777 /mydata/elasticsearch/

# 配置任意机器可以访问 elasticsearch
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

3. 启动Elasticsearch

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-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 :是后面发送http请求的端口
  • 9300 :是es在分布式集群下的通信端口
  • -e “discovery.type=single-node” 以单节点启动
  • -e ES_JAVA_OPTS="-Xms64m -Xmx512m" 设置启动占用内存,指定最小内存和最大内存
  • -v:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;
  • -d elasticsearch:7.6.2:指定要启动的镜像
  • 访问 IP:9200 看到返回的 json 数据说明启动成功。
    在这里插入图片描述

设置 Elasticsearch 随Docker启动

# 当前 Docker 开机自启,所以 ES 现在也是开机自启
docker update elasticsearch --restart=always

启动可视化Kibana

docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://ES安装的主机地址:9200 \
-p 5601:5601 \
-d kibana:7.4.2

浏览器输入ip:5601 测试:
在这里插入图片描述

6. 设置 Kibana 随Docker启动

# 当前 Docker 开机自启,所以 kibana 现在也是开机自启
docker update kibana --restart=always

Elasticsearch-使用入门(初步检索)

ES作为一个存储分析和检索一个引擎,对ES的所有操作,ES都封装成了REST API 发请求就行了

1. _cat(查询ES信息)

  • GET: /_cat/nodes:查看所有节点
  • GET: /_cat/health:查看ES健康状况
  • GET: /_cat/master:查看主节点信息
  • GET: /_cat/indicies:查看所有索引
    在这里插入图片描述

索引一个文档(保存一条记录)

ES: 保存一条数据,保存在哪个索引下的哪个类型下,指定用哪个唯一标识
MySQL: 保存一条数据,保存在哪个数据库的哪张表下

customer/external/1 在customer索引(数据库)下的external(表)类型下保存1号数据

PUT 和 Post 都可以,

  • post 新增。如果不指定id,会自动生成id。指定id就会修改这个数据,并增加版本号
  • put 可以新增可以修改。put必须指定id,由于put需要指定id,一般用来做修改操作,不指定id会报错。

在这里插入图片描述

查询文档

GET index/type/id

在这里插入图片描述

{
    "_index": "customer",  # 在哪个索引(库)
    "_type": "external",   # 在哪个类型(表)
    "_id": "1",            # 文档id(记录)
    "_version": 5,         # 版本号
    "_seq_no": 4,          # 并发控制字段,每次更新都会+1,用来做乐观锁
    "_primary_term": 1,    # 同上,主分片重新分配,如重启,就会变化
    "found": true,
    "_source": {           # 数据
        "name": "zhangsan"
    }
}

# 乐观锁更新时携带 ?_seq_no=0&_primary_term=1  当携带数据与实际值不匹配时更新失败

在这里插入图片描述

更新文档

/index/type/id/_update

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

几种更新文档的区别

在上面索引文档即保存文档的时候介绍,还有两种更新文档的方式:

  • 当PUT请求带id,且有该id数据存在时,会更新文档;
  • 当POST请求带id,与PUT相同,该id数据已经存在时,会更新文档;
    这两种请求类似,即带id,且数据存在,就会执行更新操作。
    类比:
  • 请求体的报文格式不同,_update方式要修改的数据要包裹在 doc 键下
  • _update方式不会重复更新,数据已存在不会更新,版本号不会改变,另两种方式会重复更新(覆盖原来数据),版本号会改变
  • 这几种方式在更新时都可以增加属性,PUT请求带id更新和POST请求带id更新,会直接覆盖原来的数据,不会在原来的属性里面新增属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值