Elasticsearch学习笔记
Elasticsearch是面向文档型数据库,一条数据就是一个文档。ES的index可以看做一个库,而types相当于表,documents相当于表的行
索引操作
比对关系型数据库,创建所以就等同于创建数据库
- PUT请求
http://127.0.0.1:9200/shopping
创建了一个shopping的索引文件
- GET请求
http://127.0.0.1:9200/shopping
获取shopping的索引信息
http://127.0.0.1:9200/_cat/indices?v
展示所有的索引信息
- DELETE
http://127.0.0.1:9200/shopping
删除shopping的索引信息
- HEAD
创建文档
索引创建好之后,创建文档,并添加数据。这里可以类比为关系型数据库中的表数据,添加的数据格式为json,创建方式为post
请求地址为http://127.0.0.1:9200/shopping/_doc
请求体
{
"title":"小米手机",
"category":"小米",
"images":"http://www.gulixueyuan.com/xm.jpg",
"price":"3999.00"
}
请求地址为http://127.0.0.1:9200/shopping/_doc/10001
可以自定义id为10001
获取文档信息,请求方式为get,请求地址为http://127.0.0.1:9200/shopping/_doc/10001
查询所有http://127.0.0.1:9200/shopping/_search
全局修改
请求方式为PUT,请求地址为http://127.0.0.1:9200/shopping/_doc/10001
请求体不能为空
{
"title":"小米手机",
"category":"小米",
"images":"http://www.gulixueyuan.com/xm.jpg",
"price":"4999.00"
}
局部修改
请求方式为post,请求地址为http://127.0.0.1:9200/shopping/_update/10001
请求体不能为空
{
"doc":{
"title":"华为"
}
}
查询操作
条件查询
1、地址查询
http://127.0.0.1:9200/shopping/_search?q=category:小米
category是属性名,小米是属性值
2、请求体查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"match":{
"category":"小米"
}
}
}
全查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"match_all":{
}
}
}
分页查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"match_all":{
}
},
"from":0,//起始位置
"size":2,//大小
"_source":["title"],//对想要的数据进行指定查询
"sort":{
"price":{
"order":"desc"//对price进行降序排序
}
}
}
多条件查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"bool":{
"must":[//多条件,类似于and,or的话用should
{
"match":{
"category":"小米"
}
},
{
"match":{
"price":"1999.00"
}
},
]
}
}
}
范围查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"bool":{
"filter":{
"price":{
"gt":5000//大于5000
}
}
}
}
}
模糊查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"match":{
"category": "小华"//会将关键值拆成'小'和'华'去匹配
}
}
}
// 要是做完全匹配将'match'换成'match_phrase'
高亮查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"query":{
"match_phrase":{
"category": "小米"
}
},
"hightlight":{
"fields":{
"category": {}
}
}
}
聚合查询
请求地址是http://127.0.0.1:9200/shopping/_search
请求体
{
"aggs":{
"price_group":{//名称,如何求平均值换成price_avg
"terms":{//分组
"field": "price"//分组字段
}
}
},
"size":0
}