数据分类
- 结构化数据
- 非结构化数据
- 半结构化数据
Elastic Stack 的核心
ElasticSearch 安装
es 的光放地址: https://www.elastic.co/cn/
下载版本: 7.8.0
启动文件
注意: 9300端口为ES 集群间组件的通信端口,9200端口为浏览器访问的http协议Restful端口
问题解决
打不开?
ElasticSearch 是使用java开发的,且7.8版本的ES 需要JDK 版本1.8以上,默认安装包带有jdk环境,如果系统配置JAVA_HOME,name使用
默认的JDK,如果没有配置使用自带的JDK,一般建议使用系统配置的JDK
双击启动窗口闪退?
通过路径追踪错误,如果是"空间不足",请修改
config/jvm.options配置文件
# 设置JVM 初始内存为1G,此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存
# 设置JVM最大可用内存为1G
-Xmslg
-Xmxlg
ES 数据格式
Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档
ES 里的Index 可以看做是一个库,而Types相当于表,Documents则相当于表的行
这里Types的概念已经被逐渐弱化,ES6.x中,一个index下已经只能包含一个type,Es7.x中,Type的概念已经被删除了
倒排索引
通过关键字锁定主键索引,从而到处该数据
正排(正向)索引
musql中通过主键,锁定对应数据
ES索引操作
创建索引 PUT
对比关系型数据库,创建索引就等同于创建数据库
Postman中向ES 服务器发送PUT请求:http:127.0.0.1:8200/shopping 创建一个shopping的index
获取某个索引 GET
获取所有索引 v 表示详细信息
删除索引 DELETE
ES 文档操作
在Postman中 向ES 服务器发送POST请求,http://127.0.0.1:9200/shopping/_doc _doc表示索引中添加文档
成功后的返回值
_id :数据的随机唯一标识,类似于主键,每次添加都不一样,当然也可以通过这个标识进行查询,但是这个_id并不好记,可以自定制
查询刚刚添加的单条文档数据
_doc/文档标识ID
查询本索引下的所有的文档数据
_search
修改
完全覆盖之前的文档数据
PUT : http://127.0.0.1:9200/shopping/_doc/1001/
需要覆盖的内容
{"title":"华为手机","price":3999.00,"cateory":"华为"}
局部字段更新
POST http://127.0.0.1:9200/shopping/_doc/1001/
需要更新的字段
{
"doc":{ // doc表示明确指定更新
"title":"华为手机",
"price":399.00
}
}
ES 条件查询
指定字段查询
http://127.0.0.1:9200/shopping/_search?q=title:小米
由于url中携带中文容易出现乱码的情况,所以改成通过请求体来发送查询参数
http://127.0.0.1:9200/shopping/_search
{
"query":{ // query 表示本操作为查询
"match":{ // match 表示匹配查询
"title":"小米"
}
}
}
全量查询 + 分页
{
"query":{ // query 表示本操作为查询
"match_all":{ // match_all表示全量查询,配合分页查询
}
},
"from" : 0, // 表示第一页的起始位置 第二页为(页码-1)*每页数据条数 (2-1) * 10
"size" : 10, // 每一页多少条数据
"_source" : ["title"], // 只显示title字段
"sort" : {
"price":{ // 指定字段进行排序
"order":"desc" // 降序排列
}
}
}