ES 是一个开源的高扩展的分布式全文搜索引擎,Elasticsearch 是面向文档型数据库
ElasticSearch 目录
9200 端口为浏览器访问的http。9300 端口为Elasticsearch 集群间组件的通信端口,
| bin | 可执行脚本目录 |
| -: | :- |
| config | 可配置目录 |
| jdk | 内置JDK目录 |
| lib | 类库 |
| logs | 日志目录 |
| modules | 模块目录 |
| piugins | 插件目录 |
一个索引就是一个拥有几分相似特征的文档的集合,(索引有一个名字表示必须是小写字母)
映射是定义一个文档和它所包含的字段如何被存储和索引的过程。默认配置下,ES可以根据插入的数据自动地创建mapping,也可以手动建立mapping。mapping中主要包括字段名、字段类型等。
文档是索引中存储的一条条数据。一条文档是一个可被索引的最小单元。ES中文档采用JSON格式表示。
索引基本操作
es 的操作时在浏览器完成的通过发送请求的方式完成创建,因为put请求时等幂的所以在创建索引时通过put请求 以防止重复多个相同名称索引
例如请求
put : http://127.0.0.1:9200/shopping
# 返回的结果为
{
"acknowledged": true, 【响应结果】
"shards_acknowledged": true, 【分片结果】
"index": "shopping" 【索引名称】
}
# 注意:创建索引库的分片数默认1 片,在7.0.0 之前的Elasticsearch 版本中,默认5 片
通过发送GET请求查看全索引信息
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 | 主分片和副分片整体占空间大小 |
| pir.store.size | 主分片占空间大小 |
GET 请求 :http://127.0.0.1:9200/shopping
# 返回结果如下
{
"shopping"【索引名】: {
"aliases"【别名】: {},
"mappings"【映射】: {},
"settings"【设置】: {
"index"【设置 - 索引】: {
"creation_date"【设置 - 索引 - 创建时间】: "1614265373911",
"number_of_shards"【设置 - 索引 - 主分片数量】: "1",
"number_of_replicas"【设置 - 索引 - 副分片数量】: "1",
"uuid"【设置 - 索引 - 唯一标识】: "eI5wemRERTumxGCc1bAk2A",
"version"【设置 - 索引 - 版本】: {
"created": "7080099"
},
"provided_name"【设置 - 索引 - 名称】: "shopping"
}
}
}
}
DELETE 请求 :http://127.0.0.1:9200/shopping
POST 请求 :http://127.0.0.1:9200/shopping/_doc
# 请求体加入
{
"title":"小米手机",
"category":"小米",
"images":"http://www.gulixueyuan.com/xm.jpg",
"price":3999.00
}
返回信息解读
{
"_index"【索引】: "shopping",
"_type"【类型-文档】: "_doc",
"_id"【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为MySQL 中的主键,随机生成
"_version"【版本】: 1,
"result"【结果】: "created", #这里的create 表示创建成功
"_shards"【分片】: {
"total"【分片 - 总数】: 2,
"successful"【分片 - 成功】: 1,
"failed"【分片 - 失败】: 0
},
"_seq_no": 0,
"_primary_term": 1
}
可以使用如下方法生成指定的id便于后期查询
post : http://127.0.0.1:9200/shopping/_doc/1
GET 请求 :http://127.0.0.1:9200/shopping/_doc/1
shpping是索引名,doc类型/ id
POST 请求 :http://127.0.0.1:9200/shopping/_doc/1
携带请求体
{
"title":"华为手机",
"category":"华为",
"images":"http://www.gulixueyuan.com/hw.jpg",
"price":4999.00
}
发送以下请求方式:
POST 请求 ,http://127.0.0.1:9200/shopping/_delete_by_query
携带请求体
{
"query":{
"match":{
"price":4000.00
}
}
DELETE 请求 :http://127.0.0.1:9200/shopping/_doc/1
发送以下请求方式:
POST 请求 ,http://127.0.0.1:9200/shopping/_delete_by_query
携带请求体
{
"query":{
"match":{
"price":4000.00
}
}
es对应数据库内的数据操作 需要如同JDBC一样对数据库字段进行映射
put 请求:http://127.0.0.1:9200/student/_mapping
{
"properties": {
"name":{
"type": "text",
"index": true
},
"sex":{
"type": "text",
"index": false
},
"age":{
"type": "long",
"index": false
}
}
字段说明
查看索引
ES的查询时通过请求体携带不同的字段进行完成的
"query":这里的query 代表一个查询对象,里面可以有不同的查询属性
"match_all":查询类型,例如:match_all(代表查询所有), match,term , range 等等
*match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or 的关系*
multi_match 与match 类似,不同的是它可以在多个字段中查询
`term `查询,精确的关键词匹配查询,不对查询条件进行分词 功能和 keyword 类似
`terms `查询和 `term` 查询一样,但它允许你指定多值进行匹配。
{查询条件}:查询条件会根据类型的不同,写法也有差异
GET 请求 :http://127.0.0.1/student/_search
{
"query": {
# 不同的查询属性
"terms": {
"name": ["zhangsan","lisi"]
}
}
}
还有许多查询条件,不做具体表示,可以查看官方文档https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html