ES Mapping及常用API小结

ES中的Mapping
Mapping就是对索引库中索引的字段名称及其数据类型进行定义,类似于mysql中的表结构信息,但ES中的mapping比数据库灵活很多,它可以动态识别字段。一般不需要指定mapping字段都可以,因为ES会自动根据数据格式识别它的类型,如果你需要对某些字段添加特殊属性(如:定义使用其他分词器、是否分词、是否存库等),就必须手动添加mapping
查询索引库中mapping信息:
Kibanan中查询mapping信息:
GET /index/type/_mapping

pretty关键字
在任意的查询字符串中增加pretty参数,会让ES美化输出(pretty-print)JSON响应以便更加容易阅读。_source字段不会被美化,它的样子与我们输入的一致。

GET关键字查询检索文档
通常,GET请求将返回文档的全部,存储在_source参数中。但可能你感兴趣的只是其中某个字段,请求个别字段可以使用_source参数,多个字段可以使用逗号分隔
GET /index/type/id?_source=age,name
若你只想得到_source字段而不是其他的的元数据,可以这样请求:
GET /index/type/id/_source
检查文档的个数:
GET /index/type/_count


插入新文档
ES中_index、_type、_id唯一确定一个文档,要想保证文档是新加入的,最简单的方式就是使用POST方法让ES自动生成唯一的id
POST /index/type/
{...}

如果想使用自定义的id插入新文档,我们必须告诉ES应该在_index、_type、_id三者都不同时才接受请求,为了做到这一点有两种方法,
第一种方法使用on_type查询参数:
PUT /index/type/id?on_type=create
{...}
第二种方法在URL后加/_create做为端点:
PUT /index/type/id/_create
{...}
如果请求成功的创建了一个新文档ES会返回正常的元数据且响应状态码是201 Created
如果包含该_index、_type、_id的文档已经存在,ES将返回409 Conflict响应状态

检索新文档
ES检索多个文档依旧非常快,合并多个请求可以避免每个单独的网络开销。如果你需要从ES中检索多个文档,相对于一个一个的检索,更快的方式是在一个请求中使用multi-get或者mget API。
mget API参数是一个docs数组,数组的每个节点定义一个文档的_index、_type、_id元数据,如果你只想检索一个或几个确定的字段,也可以定义一个_source参数
GET /_mget
{
"docs":[
{
"_index":"index",
"_type":"type",
"_id":2
},
{
"_index":"index",
"_type":"type2",
"_id":1,
"_source":"views"
}
]
}
响应体也包含一个docs数组,每个文档还包含一个响应,它们按照请求定义的顺序排列。每个这样的响应与单独使用get request响应体相同
如果你想检索的文档在同一个_index中(甚至在同一个_type)中,你就可以在URL中定义一个默认的/_index或者/_index/_type,
GET /index/type/_mget
{
"docs":[
{"_id":2},
{"_type":"pageviews","_id":1}
]
}
当然,如果所有文档具有相同的_index和_type,你可以通过简单的ids数组来代替完整的docs数组
GET /index/type/_mget
{
"ids":["2","1"]
}

猜你喜欢

转载自blog.csdn.net/kakaluoteyy/article/details/80004337