ES增删改查入门
一、文档管理
1.添加文档
模板:
PUT /{索引}/_doc/{id}
{请求体数据信息json格式}
例子:
PUT /book/_doc/1
{
"title":"Java程序性能",
"desc":"强类型语言"
}
2.修改文档
模板:
POST /{索引}/_doc/{id}
{请求体数据信息json格式}
例子:
POST /book/_doc/1
{
"title":"Go程序性能",
"desc":"强类型语言"
}
3.删除文档
模板:
DELETE /{索引}/_doc/{id}
例子
DELETE /book/_doc/1
4.获取文档
模板:
GET /{索引}/_doc/{id}
例子:
GET /book/_doc/1
5.批处理
模板:
[PUT|POST] /{索引}/_bulk
{action:{metadata}}
{请求体数据信息json格式}
备注:
action对应取值:
- create : 创建一个文档,如果文档不存在就创建
- index : 创建一个新的文档,如果文档存在就更新
- update : 批量更新文档
- delete : 批量删除,不需要有请求体
例子:
POST /book/_bulk
{"index":{"_id":1}}
{"id":1,"title":"php入门到精通","desc":"php是世界上最好的语言"}
{"index":{"_id":2}}
{"id":1,"title":"java入门到精通","desc":"java是世界上最快的语言"}
二、查询数据 - query
1.查询全部数据 - match_all
POST /{索引}/_search
{
"query": {
"match_all": {}
}
}
2.关键词查询 - term
模板:
POST /{索引}/_search
{
"query":{
"term":{
"{字段名}":"{搜索词}"
}
}
}
例子:
POST /book/_search
{
"query": {
"term": {
"desc": "java"
}
}
}
3.根据查询字符串查询 - query_string
模板:
POST /{索引}/_search
{
"query":{
"query_string":{
"default_field":"{字段名}",
"query":"{查询字符串}"
}
}
}
例子
POST /book/_search
{
"query":{
"query_string":{
"default_field":"desc",
"query":"java"
}
}
}
4.根据查询字符串查询 - match
POST /book/_search
{
"query":{
"match":{
"title":"java"
}
}
}
5.指定多个字段查询 - multi_match
POST /book/_search
{
"query":{
"multi_match":{
"query":"入门",
"fields":["desc","title"]
}
}
}
三、bool查询
1.组合条件查询
逻辑关系:
must:必须满足,相当于是AND
should:应该满足,相当于OR
must_not:必须不能满足,相当于NOT
filter: 必须满足,不计分,同时可以cache
POST /book/_search
{
"query":{
"bool":{
"should":[
{
"term": {
"title": "java"
}
},
{
"match": {
"desc": "PHP"
}
}
]
}
}
}
2.filter条件搜索
(1)范围搜索 - range
- gt :大于
- lt :小于
- gte :大于等于
- lte :小于等于
例子:
POST /book/_search
{
"query":{
"bool":{
"filter":{
"range":{
"price":{
"gt":25,
"lt":50
}
}
}
}
}
}
(2)字段存在查询 - exists
例子:
{
"query":{
"bool":{
"filter":{
"exists":{
"field":"desc"
}
}
}
}
}