| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Elasticsearch笔记 -> 正文阅读 |
|
[大数据]Elasticsearch笔记 |
1.Elasticsearch 是什么????????Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。 2.Lucene、Elasticsearch、Solr 是什么 ????
????????Lucene 是
Apache
软件基金会
Jakarta
项目组的一个子项目,提供了一个简单却强大的应用
程式接口,能够做全文索引和搜寻。在
Java
开发环
境里
Lucene
是一个成熟的免费开源
工具。就
其本身而言,
Lucene
是当前以及最近几年最受欢迎的免费
Java
信息检索程序库。
但
Lucene
只
是一个
提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的
服务框架搭建起来
进行应用。
???????
????????目前市面上流行的搜索引擎软件,主流的就两款:Elasticsearch
和
Solr
,
这两款都是基
于
Lucene
搭建的,可以独立部署启动的搜索引擎服
务软件。由于内核相同,所以两者除了
服务器安
装、部署、管理、集群以外,对于数据的操作 修改、添加、保存、查询等等都十
分类似。
在使用
过程
中,一般都会将
Elasticsearch
和
Solr
这两个软件对比,然后进行选型。这两
个搜索引擎都是
流行的,先进的的开源搜索引擎。它们都是围绕核心底
层搜索库
- Lucene
构建的
-
但它们又是不
同的。像所有东西一样,每个都有其优点和缺点:
?2.Elasticsearch 入门2.1 Elasticsearch 安装2.1.1 下载软件
Elasticsearch
最新的版本是
7.11.2
(截止
2021.3.10
),我们选择
7.8.0
版本(最新版本半年前的
版本)
?????????Elasticsearch 分为 Linux 和 Windows 版本,根据自己需要选择,公司用的一般都是linux版 本 2.1.2 安装软件
Windows
版的
Elasticsearch
的安装很简单,解压即安装完毕,解压后的
Elasticsearch
的目录结
构如下:
?????? ???解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务
注意:?
???????
????????
9300
端口为
Elasticsearch
集群间组件的通信端口,
9200
端口为浏览器访问的
http
协议
RESTful
端口。
打开浏览器(推荐使用谷歌浏览器),输入地址:
http://localhost:9200
,测试结果
?2.1.3 问题解决
2.2 Elasticsearch 基本操作2.2.1 RESTful
????????REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就
是
RESTful
。
Web
应用程序最重要的
REST
原则是,客户端和服务器之间的交互在请求之
间是无状
态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务
器在请求之间的
任何
时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用
服务器回答,这十分
适合云计算之类的环境。客户端可以缓存数据以改进性
能。
????????在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它
向客
户端公开。资源的例子有:应用程序对象、数据库
记录、算法等等。每个资源都使用
URI
(Universal Resource Identifier)
得到一个唯一的地址。所有资源都共享统一的接口,以便在客
户
端和服务器
之间传输状态。使用的是标准的
HTTP
方法,比如
GET
、
PUT
、
POST
和
DELETE
。
????????在 REST
样式的
Web
服务中,每个资源都有一个地址。资源本身都是方法调用的目
标,方法
列表对所有资源都是一样的。这些方法都是标准方法,包括
HTTP GET
、
POST
、
PUT
、
DELETE
,还可能包括
HEAD
和
OPTIONS
。简单的理解就是,如果想要访问互联
网上的资源,
就必须向资
源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作
(增删改查)。
2.2.2 客户端安装
????????如果直接通过浏览器向 Elasticsearch
服务器发请求,那么需要在发送的请求中包含
HTTP
标
准的方法,而
HTTP
的大部分特性且仅支持
GET和
POST
方法。所以为了能方便
地进行客户端的
访问,可以使用
Postman
软件。
????????Postman 是一款强大的网页调试工具,提供功能强大的
Web API
和
HTTP
请求调试。
软件
功能强大,界面简洁明晰、操作方便快捷,设计得很
人性化。
Postman
中文版能够发送
任何类型
的
HTTP
请求
(GET, HEAD, POST, PUT..)
,不仅能够表单提交,且可以附带任意
类型请求体。
?2.2.3 数据格式
????????Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,
我
们将
Elasticsearch
里存储文档数据和关系型数据库MySQL
存储数据的概念进行一个类比
????????ES 里的
Index
可以看做一个库,而
Types
相当于表,
Documents
则相当于表的行。
这里
Types
的概念已经被逐渐弱化,
Elasticsearch 6.X中,一个
index
下已经只能包含一个
type
,
Elasticsearch 7.X
中
, Type
的概念已经被删除了。
6
用
JSON
作为文档序列化的格式,比如一条用户信息:
2.2.4 HTTP 操作
2.2.4.1
索引操作
1)
创建索引
对比关系型数据库,创建索引就等同于创建数据库
在
Postman
中,向
ES
服务器发
PUT
请求 :
http://127.0.0.1:9200/shopping
请求后,服务器返回响应 ? ?
如果重复添加索引,会返回错误信息
?2) 查看所有索引
在
Postman
中,向
ES
服务器发
GET
请求 :
http://127.0.0.1:9200/_cat/indices?v
????????这里请求路径中的_cat
表示查看的意思,
indices
表示索引,所以整体含义就是查看当前
ES
服务器中的所有索引,就好像
MySQL
中的
show tables
的感觉,服务器响应结果如下
? ?3) 查看单个索引 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shopping
查看索引向
ES
服务器发送的请求路径和创建索引是一致的。但是
HTTP
方法不一致。这里
可以体会一下
RESTful
的意义,
?
请求后,服务器响应结果如下:
?
4)
删除索引
在
Postman
中,向
ES
服务器发
DELETE
请求 :
http://127.0.0.1:9200/shopping
?重新访问索引时,服务器返回响应:索引不存在 ? 2.2.4.2 文档操作 1) 创建文档
索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数据库中
的表数据,添加的数据格式为
JSON
格式
在
Postman
中,向
ES
服务器发
POST
请求 :
http://127.0.0.1:9200/shopping
/_doc
请求体内容为:
? 此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误? ?服务器响应结果如下:
上面的数据创建后,由于没有指定数据唯一性标识(
ID
),默认情况下,
ES
服务器会随机
生成一个。
如果想要自定义唯一性标识,需要在创建时指定:
http://127.0.0.1:9200/shopping/_doc/
1
? ? ?此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为 PUT
2)
查看文档
查看文档时,需要指明文档的唯一性标识,类似于
MySQL
中数据的主键查询
在
Postman
中,向
ES
服务器发
GET
请求 :
http://127.0.0.1:9200/shopping
/_doc/1
查询成功后,服务器响应结果:?
3) 修改文档
和新增文档一样,输入相同的
URL
地址请求,如果请求体变化,会将原有的数据内容覆盖
在
Postman
中,向
ES
服务器发
POST
请求 :
http://127.0.0.1:9200/shopping
/_doc/1
?请求体内容为:
? ?修改成功后,服务器响应结果:
4) 修改字段?
修改数据时,也可以只修改某一给条数据的局部信息
在
Postman
中,向
ES
服务器发
POST
请求 :
http://127.0.0.1:9200/shopping/
_update/1
请求体内容为:
?修改成功后,服务器响应结果: ?根据唯一性标识,查询文档数据,文档数据已经更新 ? 5) 删除文档
删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。
在
Postman
中,向
ES
服务器发
DELETE
请求 :
http://127.0.0.1:9200/shopping
/_doc/1
?删除成功,服务器响应结果: ?
?删除后再查询当前文档信息 ?如果删除一个并不存在的文档 ?
?6) 条件删除文档
一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数
据进行删除
首先分别增加多条数据
:
? 向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_delete_by_query? 请求体内容为:
?删除成功后,服务器响应结果:
?2.2.4.3 映射操作
有了索引库,等于有了数据库中的
database
。
接下来就需要建索引库
(index)
中的映射了,类似于数据库
(database)
中的表结构
(table)
。
创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型
下有哪些字段,每个字段有哪些约束信息,这就叫做映射
(mapping)
。
1) 创建映射 ?
在
Postman
中,向
ES
服务器发
PUT
请求 :
http://127.0.0.1:9200/student
/_mapping
请求体内容为:
?服务器响应结果如下: ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:31:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |