🔥本文简要🔥
网络中的API是一组函数调用或其他编程指令,用于访问特定网络应用中的软件组件。例如,Facebook API帮助开发者通过从Facebook访问数据或其他功能来创建应用程序,它可以获取出生日期或更新用户状态。
ElasticSearch提供了REST风格API,可以通过URL访问JSON。ElasticSearch使用以下约定。
- 🚌一个人可以走的很快,一群人可以走的很远🇨🇳
- 🎉点赞➕评论➕收藏 ➕关注== 养成习惯(一键四连)📝
- 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝
- 🙏作者水平有限,欢迎各位大佬指点,相互学习进步!😆
一、多重索引
API中的大多数操作,主要是针对一个或多个索引的搜索和其他操作。这有助于用户通过只执行一次查询请求,在多个地方或所有可用数据中进行搜索。许多不同的符号用于在多个索引中执行操作,我们将在这一部分讨论其中的一些。
二、逗号分隔符号
put index1
put index2
put index3
POST index1/_doc/16
{
"name":"any_string", "description":"State Board Affiliation",
"street":"Tonk Road",
"city":"Jaipur", "state":"RJ", "zip":"176114","location":[26.8535922,75.7923988],
"fees":2500, "tags":["Well equipped labs"], "rating":"4.5"
}
POST /index1,index2,index3/_search
{
"query": {
"query_string": {
"query": "any_string"
}
}
}
2.1、响应
来自index1, index2, index3的JSON对象中包含any_string。
三、_all 所有索引的关键字
POST /_all/_search
POST /_all/_search
{
"query":{
"query_string":{
"query":"any_string"
}
}
}
3.1、响应
来自所有索引的JSON对象,其中包含any_string。
四、通配符(*,+,–)
POST /school*/_search
{
"query":{
"query_string":{
"query":"CBSE"
}
}
}
4.1、响应
来自所有索引的JSON对象,这些索引始于其中包含CBSE的学校。
4.2、或者可以使用以下代码
POST /school*,book_shops/_search?ignore_unavailable=true
{
"query":{
"query_string":{
"query":"CBSE"
}
}
}
4.3、响应
无任何报错信息,忽略了不存在的索引,从所有school*开头的索引中找出包含“CBSE”的JSON对象。
五、allow_no_indices
如果没有指定通配符的索引,true值会防止引发错误。举个例子,如果没有以schools_pri开头的索引。
POST /schools_pri*/_search?allow_no_indices=true
{
"query":{
"match_all":{}
}
}
5.1、响应 (无报错)
六、expand_wildcards
此参数决定通配符是否需要扩展为开放索引或封闭索引,或者两者兼有。该参数的值可以是open和close,也可以是none和all。
6.1、例子
POST /schools/_close
6.2、响应
{"acknowledged":true}
6.3、请看下面的代码
POST /school*/_search?expand_wildcards=closed
{
"query":{
"match_all":{}
}
}
6.4、响应
{
"error":{
"root_cause":[{
"type":"index_closed_exception", "reason":"closed", "index":"schools"
}],
"type":"index_closed_exception", "reason":"closed", "index":"schools"
}, "status":403
}
七、结果格式化
我们可以获得格式良好的JSON对象,只需附加一个URL 查询参数,即pretty = true
POST /schools/_search?pretty=true
{
"query":{
"match_all":{}
}
}
八、人类可读的输出
此选项可以将响应更改为人类可读的形式(如果human = true)或计算机可读的形式(如果human = false)。例如,如果human = true,那么 distance_kilometer = 20KM,如果human = false,那么distance_meter = 20000。
POST /schools/_search?human=true
{
"query":{
"match_all":{}
}
}
九、响应信息过滤
我们可以通过添加到field_path参数中来过滤响应信息,例如
POST /schools/_search?filter_path=hits.total
{
"query":{
"match_all":{}
}
}
9.1、响应
{"hits":{"total":3}}