索引
创建索引
方式:put
请求:localhost:9200/shopping
创建一个shopping的索引
返回:acknowledge:true
具有幂等性,创建成功后第二次创建失败
查询索引
方式:GET
请求:localhost:9200/shopping 获取索引相关信息
请求:localhost:9200/_cat/indices?v 所有索引详细信息
删除索引
方式:delete
请求:localhost:9200/shopping 删除当前索引
返回:acknowledge:true
文档
创建文档
方式:post
请求:localhost:9200/shopping/_doc
请求体:json格式
不具有幂等性,创建成功后第二次创建id会不同,id由es随机生成
问题:id不好查询
不让id随机生成
方式:post/put
请求:localhost:9200/shopping/_doc/1001
这时id是1001,这就是自定义的id,这时是具有幂等性的
_doc可换成__create
文档查询
方式:GET
请求:localhost:9200/shopping/_doc/1001 获取文档相关信息
响应:found:true
类似于主键id查询
获取所有文档数据
方式:GET
请求:localhost:9200/shopping/_search 获取文档全部信息
响应:found:true
文档修改
完全覆盖修改
无论发送多少次,数据都是修改成一致的,具有幂等性
方式:PUT
请求:localhost:9200/shopping/_doc/1001
请求体:json格式
响应:result:update
局部修改
每次更新结果不是相同的,不具有幂等性
方式:post
请求:localhost:9200/shopping/_update/1001
请求体:json格式
{
"doc":{
"title":"华为"
}
}
删除文档
方式:delete
请求:localhost:9200/shopping/_update/1001
响应:result:delete
再次删除会not found
高级查询
条件查询
方式:GET
请求:localhost:9200/shopping/_select?q=字段:值
q代表query
这个请求可能会带有中文,并且是用?拼接,可以换成json
{
"query":{
"match":{
"字段":"值"
}
}
}
全量查询也可以使用json格式
{
"query":{
"match_all":{
}
}
}
分页查询
方式:GET
请求:localhost:9200/shopping/_select
请求体:json格式
{
"query":{
"match_all":{
}
},
"from":0,
"size":2
}
查询指定字段
类似于mysql select a,b,c from table
json体:
{
"query":{
"match_all":{
}
},
"from":0,
"size":2,
"_source":["指定字段","指定字段"]
}
排序
json体:
{
"query":{
"match_all":{
}
},
"from":0,
"size":2,
"_source":["指定字段","指定字段"],
"sort":{
"排序字段":{
"order":"asc"
}
}
}
多条件查询
bool表示条件判断,类似mysql中where
must表示多个条件同时成立,类似mysql中and
should表示多个条件成立一个就行,类似mysql中or
match表示匹配,类似于mysql中 字段=值
json体:
{
"query":{
"bool":{
"must":[
{
"match":{
"字段":"值"
}
},
{
"match":{
"字段":"值"
}
}
],
"should":[
{
"match":{
"字段":"值"
}
}
]
}
}
}
范围查询
json体:
{
"query":{
"bool":{
"must":[
{
"match":{
"字段":"值"
}
},
{
"match":{
"字段":"值"
}
}
],
"should":[
{
"match":{
"字段":"值"
}
}
],
"filter":{
"range":{
"字段":{
"gt":值
}
}
}
}
}
}
全查询(模糊查询)
在es中如果想进行类似mysql中的模糊查询怎么做,其实在语法上和正常匹配没啥不同,
原因:当保存文档数据时,es将数据文字进行分词拆解,放入倒排索引中,因此可以做到全文检索
这里es的分词器其实并不是太理想,可以安装其他分词器
json体:
{
"query":{
"match":{
"字段":"部分值"
}
}
}
精准匹配
json体:
{
"query":{
"match_phrase":{
"字段":"全部字段"
}
}
}
高亮显示
json体:
{
"query":{
"match": {
"title": "第四届移动互联网营销峰会"
}
},
"highlight": {
"fields": {
"title": {}
}
}
}
聚合查询
json体
{
"aggs":{ //聚合操作
"名字":{ //分组名称,随便取
"terms":{ //分组
"field":"字段" //分组字段
}
}
},
"size":0 //不用原始数据
}
求平均值
json体:
{
"aggs":{ //聚合操作
"名字":{ //分组名称,随便取
"avg":{ //求平均值
"field":"字段"
}
}
},
"size":0 //不用原始数据
}