尚硅谷ES基础 - RESTful & JSON&基本概念&倒排索引&HTTP

RESTful & JSON

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI(Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、 PUT、 POST 和DELETE。

在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目
标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、 POST、PUT、 DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径, 以及对资源进行的操作(增删改查)。

REST 样式的 Web 服务若有返回结果,大多数以JSON字符串形式返回。
**JSON格式的好处:**JSON便于序列化和反序列化

ES的基本概念

在这里插入图片描述

倒排索引的概念及好处

概念
倒排索引创建keyword与id的关系,记录了包含某keyword的所有文档的编号、词频等信息。这让我们能够在O(1)的时间内判断某个文档是否包含某个词,而且还可以基于词频、相关度等统计信息进行搜索结果排序,快速对全文内容进行检索
优势
高效的文本搜索:由于倒排索引通过单词快速定位到含有该单词的文档,所以搜索效率非常高
支持分词:分词可以将连续字母或数字序列划分为有意义的词组或单个词汇,这些分词信息可以被用于构建索引,从而实现更加精确的搜索结果。
支持高级搜索功能:倒排索引可以使用词间关系、词条权重等信息对搜索结果进行精确匹配、布尔运算和相关度排序

索引的创建&查询 & 删除

创建

建索引就等同于创建数据库,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping shopping为索引名

查询

GET请求查询索引信息
查看所有索引 :发 GET 请求 : http://127.0.0.1:9200/_cat/indices?v
请求路径中的_cat 表示查看的意思, indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引

删除

发 DELETE 请求 : http://127.0.0.1:9200/shopping

文档-创建(Put & Post)

向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_doc 请求体JSON内容为:
_doc索引中添加文档
此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误 PUT要求幂等性而POST不要求
如果想要自定义唯一性标识,需要在创建时指定: http://127.0.0.1:9200/shopping/_doc/1

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00
}

查询-主键查询 & 全查询

主键查询

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

全查询

查看索引下所有数据,向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/shopping/_search

全量修改 & 局部修改 & 删除

全量修改

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

局部修改

向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_update/1
请求体

"doc": {
		"title":"小米手机",
		"category":"小米"
	}
删除

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)
向 ES 服务器发 DELETE 请求 : http://127.0.0.1:9200/shopping/_doc/1

条件查询 & 分页查询 & 查询排序

条件查询

方式1:该方式如果条件为中文可能会导致乱码
查找category为小米的文档

http://127.0.0.1:9200/shopping/_search?q=category:小米

方式2:请求体方式

{
	"query":{
		"match":{
			"category":"小米"
		}
	}
}

查找所有内容

{
	"query":{
		"match_all":{}
	}
}
分页查询

向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search

{
	"query":{
		"match_all":{}
	},
	"from":0,#(页码-1*每页条数
	"size":2
	"_source":["title"]
}
查询排序
{
	"query":{
		"match_all":{}
	},
	"sort":{
		"price":{
			"order":"desc"
		}
	}
}

多条件查询 & 范围查询

多条件查询

bool表示条件
must表示多条件同时成立,should表示或者

{
	"query":{
		"bool":{
			"must":[{
				"match":{
					"category":"小米"
				}
			},{
				"match":{
					"price":3999.00
				}
			}]
		}
	}
}
范围查询

使用filter操作

{
	"query":{
		"bool":{
			"should":[{
				"match":{
					"category":"小米"
				}
			},{
				"match":{
					"category":"华为"
				}
			}],
            "filter":{
            	"range":{
                	"price":{
                    	"gt":2000
                	}
	            }
    	    }
		}
	}
}

全文检索 & 完全匹配 & 高亮查询

全文检索

将检索进行分词,不用完全匹配
{
“query”:{
“match”:{
“category” : “小华”
}
}
}

完全匹配
{
	"query":{
		"match_phrase":{
			"category" : "为"
		}
	}
}
高亮查询
{
	"query":{
		"match_phrase":{
			"category" : "为"
		}
	},
    "highlight":{
        "fields":{
            "category":{}//<----高亮这字段
        }
    }
}

聚合查询

{
	"aggs":{//聚合操作
		"price_group":{//名称,随意起名
			"terms":{//分组
				"field":"price"//分组字段
			}
		}
	}
}

若不想要不附带原始数据的结果

{
	"aggs":{
		"price_group":{
			"terms":{
				"field":"price"
			}
		}
	},
    "size":0
}

对所有手机价格求平均值

{
	"aggs":{
		"price_avg":{//名称,随意起名
			"avg":{//求平均
				"field":"price"
			}
		}
	},
    "size":0
}

映射关系

定义字段的约束信息

PUT http://127.0.0.1:9200/user/_mapping

{
    "properties": {
        "name":{
        	"type": "text",//可以分词
        	"index": true
        },
        "sex":{
        	"type": "keyword",//不可分词 需完整匹配
        	"index": true
        },
        "tel":{
        	"type": "keyword",
        	"index": false//没有被索引 不支持查询
        }
    }
}

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没脑袋的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值