Elasticsearch:《大数据集群学习笔记与实战》之es集群(3)es的请求格式及返回

1.基本的请求格式

Elasticsearch:《大数据集群学习笔记与实战》之es集群(3)es的请求格式及返回

这是基本的公式

下面介绍相关的术语

 

Elasticsearch:《大数据集群学习笔记与实战》之es集群(3)es的请求格式及返回

2.基本的 http  方法 

2.1 5个主要方法

GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。

DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。

 

对于程序员来说,GET 和POST 基本可以解决大部分的请求,但根据Http协议的初衷

其中每个请求方法对应着不同的请求方式 

 对于概括的增删改查来讲 大致对应如下

GET 对应查     POST 对应增   PUT 对应改   DELETE 对应删

 

GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。

POST 请求一般是增加新的数据

PUT  请求一般是对现有数据进行更新操作

DELETE  请求一般用来删除数据

虽然GET和POST 可以实现基本请求,但为了规范我们可以试着使用其他的,对于很多地方,可能只支持GET 和 POST 我们要视情况而定

2.2 GET方法与POST方法的区别

GET方法:

使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:

/test/demo_form.jsp?name1=value1&name2=value2

特点:

  • GET请求能够被缓存
  • GET请求会保存在浏览器的浏览记录中
  • 以GET请求的URL能够保存为浏览器书签
  • GET请求有长度限制
  • GET请求主要用以获取数据

POST方法:

使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器:

POST /test/demo_form.jsp HTTP/1.1

Host: w3schools.com

name1=value1&name2=value2

特点:

  • POST请求不能被缓存下来
  • POST请求不会保存在浏览器浏览记录中
  • 以POST请求的URL无法保存为浏览器书签
  • POST请求没有长度限制

区别一(使用场景):
get重点在从服务器上获取资源,post重点在向服务器发送数据;


区别二(请求数据位置):
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;


区别三(请求数据大小):
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;


区别四(安全性):
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;


区别五(编码集合):
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。

区别六(共享性):
get请求的请求数据在url中,便于分享连接,可以添加到书签,而post请求不可以。


区别七(缓存):
get请求能被缓存,而post请求不行。


区别八(表单重复提交):

点击返回/刷新按钮,对get请求没有影响,对于post请求可能会导致数据重发(浏览器会提示)。

 

2.3 常用的HTTP状态码

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。

状态码如 200 OK,以 3 位数字和原因短语组成。

数字中的第一位指定了响应类别,后两位无分类。响应类别有以下 5 种。

2.3.1 状态码的类别

1XX Informational(信息性状态码)接收的请求正在处理

2XX Success(成功状态码) 请求正常处理完毕

3XX Redirection(重定向状态码) 需要进行附加操作以完成请求

4XX Client Error(客户端错误状态码)服务器无法处理请求

5XX Server Error(服务器错误状态码)服务器处理请求出错

只要遵守状态码类别的定义,即使改变 RFC2616 中定义的状态码,或服务器端自行创建状态码都没问题。

 

简单说明

200:请求被正常处理

204:请求被受理但没有资源可以返回

206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

301:永久性重定向

302:临时重定向

303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

304:发送附带条件的请求时,条件不满足时返回,与重定向无关

307:临时重定向,与302类似,只是强制要求使用POST方法

400:请求报文语法有误,服务器无法识别

401:请求需要认证

403:请求的对应资源禁止被访问

404:服务器无法找到对应资源

500:服务器内部错误

503:服务器正忙

3.查询语句 +pretty 

0005.查询语句 +pretty

curl -XPOST http://192.168.1.3:9200/index/fulltext/_search?pretty  -H 'Content-Type:application/json' -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}
'


0006.查询语句 +head 显示头信息


方法一:

curl -XHEAD http://192.168.1.3:9200/index/fulltext/_search?pretty -i  -H 'Content-Type:application/json' -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}
'


方法二:推荐

curl -XPOST http://192.168.1.3:9200/index/fulltext/_search?pretty -i  -H 'Content-Type:application/json' -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}'

各查询对应的结果

Elasticsearch:《大数据集群学习笔记与实战》之es集群(3)es的请求格式及返回

 

 Elasticsearch:《大数据集群学习笔记与实战》之es集群(3)es的请求格式及返回