ElasticSearch-1

1.Elasticsearch 是什么

The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。

Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。

2.全文搜索引擎

主要解决结构化数据搜索和非结构化数据搜索;

它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

3.ElasticSearch与Solr比较

ES:JSON,RESFUL接口,大数据量;内置分布式管理;

SOLR:多种JSON、XML,WEBService接口;ZK管理;

4.Window安装ES

Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕,解压后的 Elasticsearch 的目录结构如下

目录

含义

bin

可执行脚本目录

config

配置目录

jdk

内置 JDK 目录

lib

类库

logs

日志目录

modules

模块目录

plugins

插件目录

解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务

注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http协议 RESTful 端口。

打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200,测试结果

双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改config/jvm.options 配置文件

4.1 ES基本操作

RESTful

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。

在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)。

Postman

Postman 是一款强大的网页调试工具,提供功能强大的 Web API 和 HTTP 请求调试。软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman 中文版能够发送任何类型的 HTTP 请求 (GET, HEAD, POST, PUT..),不仅能够表单提交,且可以附带任意类型请求体。

 

4.2数据格式

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解, 我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比

ES里的Index可以看成一个库,Types相当于表,Documents相当于表的行。

7之后没有Types;一个index下已经只能包含一个type;

用JSON 作为文档序列化的格式,比如一条用户信息:

5.HTTP操作

5.1索引操作

1.创建索引

index类似与关系型数据库的库;

对比关系型数据库,创建索引就等同于创建数据库;

在 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 的感觉,服务器响应结果如下

表头

含义

health

当前服务器健康状态:

green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)

status

索引打开、关闭状态

index

索引名

uuid

索引统一编号

pri

主分片数量

rep

副本数量

docs.count

可用文档数量

docs.deleted

文档删除状态(逻辑删除)

store.size

主分片和副分片整体占空间大小

pri.store.size

主分片占空间大小

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

重新访问索引时,服务器返回响应:索引不存在

5.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

POST随机产生一个ID值;指定唯一ID后,可以是PUT

此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为 PUT

2.查看文档

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询 

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shopping/_doc/1

查看成功后,服务器响应结果:

3.修改文档

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/shopping/_doc/1

全量更新;请求体内容为:

修改成功后,服务器响应结果:

4.修改字段

修改数据时,也可以只修改某一给条数据的局部信息;每次更新的内容是不同的,所以非幂等性;所以用POST

在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_update/1 请求体内容为:

{

  "doc":

  { "price":3000.00}

}

修改成功后,服务器响应结果:

5.删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/shopping/_doc/1

再次查询

如果删除一个并不存在的文档

6.条件查询

1.在 Postman 中,向 ES 服务器发 GET 请求 :通过请求路径实现条件查询;http://127.0.0.1:9200/shopping/_search?q=category:小米

或者http://127.0.0.1:9200/shopping/_search 

通过请求体实现条件查询

在body中输入查询条件:

{

    "query":{

        "match":{

            "category":"小米"

        }

    }

}

2.批量查询:

在Body中输入查询条件:match_all

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值