1.Restfull认识
Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。
优点:
①拥有http的优点,本身就是http,无状态,不用关心两次访问上下文。
②透明性,暴露资源存在
③充分利用 HTTP 协议本身语义。
特征:
①资源使用名词表示
资源是通过url描述,也就是在url不要出现动词
②使用http动词来描述操作
get 获取 post修改 put添加 delete删除
2.命令操作
①理解文档概念
ES是面向文档(document oriented)的.原来在lucene中是通过Document类 对象来表示,在es要使用json来标识.
②数据操作
添加:
#指定id
PUT test/students/1
{
"id":1,
"name":"张二狗",
"age":26,
"hobby":["大保健","老女人"]
}
#不指定id
POST test/students
{
"id":3,
"name":"王大",
"age":31,
"hobby":["送快递","吃鸡"]
}
获取:
#查询一个
GET test/students/1
修改:
#先删除后添加(覆盖)
PUT test/students/1
{
"id":1,
"name":"李二狗",
"age":30,
"hobby":["吃","耍"]
}
#局部修改
POST test/students/1/_update
{
"doc":
{
"id":1,
"name":"王五",
"age":42
}
}
删除:
DELETE test/students/1
③查询命令
#查询所有
GET test/students/_search
#批量查询
GET test/students/_mget
{
"ids":["1","XVGjHGgBRvTh6rRKUAKs"]
}
#高级查询
GET test/students/_search?q=age:[20 TO 40]
#高级查询+排序
GET test/students/_search?q=age:[20 TO 40]&sort=age:desc
#高级查询+排序+分页
GET test/students/_search?q=age:[20 TO 40]&sort=age:desc&from=1&size=2
#高级查询+排序+分页+截取字段
GET test/students/_search?q=age:[20 TO 40]&sort=age:desc&from=1&size=2&_source=name,age
3.DSL
- ①DSL认识
由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现.
查询字符串模式:GET itsource/employee/_search?q=fullName:小明
DSL模式: GET itsource/employee/_search
{
“query” : {
“match” : {
“fullName” : “小明”
}
}
对于简单查询,使用查询字符串比较好,但是对于复杂查询,由于条件多,逻辑嵌套复杂,查询字符串不易组织与表达,且容易出错,因此推荐复杂查询通过DSL使用JSON内容格式的请求体代替。
- ②组成
dsl=dsl查询+dsl过滤
dsl过滤简单理解为就是精确查询,而dsl查询是模糊查询(like).由于查询需要做相关度排序,并且过滤可以缓存.所有过滤的效率高于查询.所以只有必须要用查询的时候才用它(模糊查询),否则都用过滤.
dsl查询
#dsl查询-->高级查询+分页+排序+截取字段
GET test/students/_search
{
"query": {
"match_all": {
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
],
"from": 0,
"size": 2,
"_source": ["name","age"]
}
dsl过滤
#dsl过滤
GET test/students/_search
{
"query": {
"bool": {
"must": [
{
"match_all": {
}
}
],
"filter": {
"range": {
"age": {
"gte": 10,
"lte": 40
}
}
}
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}