elasticsearch简单操作

索引

创建索引

方式: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 //不用原始数据
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值