Elasticsearch——03全文搜索服务器_交互协议Restful&ES命令操作

1.Restfull认识

        Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。

        优点:

                ①拥有http的优点,本身就是http,无状态,不用关心两次访问上下文。

                ②透明性,暴露资源存在

                ③充分利用 HTTP 协议本身语义。

        特征:

            ①资源使用名词表示

                资源是通过url描述,也就是在url不要出现动词

           ②使用http动词来描述操作

                 get 获取 post修改 put添加 delete删除

2.命令操作

        ①理解文档概念

               ES是面向文档(document oriented)的.原来在lucene中是通过Document类         对象来表示,在es要使用json来标识.

747027c6ccd8f09cbe1495fdff0988c77c9.jpg

        ②crud

 添加:

#指定id
PUT test/students/1
{
  "id":1,
  "name":"张二狗",
  "age":26,
  "hobby":["大保健","老女人"]
}

#不指定id
POST test/students
{
  "id":3,
  "name":"王大",
  "age":31,
  "hobby":["送快递","吃鸡"]
}

获取:

#查询一个
GET test/students/1

修改:

#先删除后添加(覆盖)
PUT test/students/1
{
  "id":1,
  "name":"李二狗",
  "age":30,
  "hobby":["吃","耍"]
}

#局部修改
POST test/students/1/_update
{
  "doc":
  {
    "id":1,
    "name":"王五",
    "age":42
  }
}

删除:

DELETE test/students/1

    ③查询命令

#查询所有
GET test/students/_search

#批量查询
GET test/students/_mget
{
  "ids":["1","XVGjHGgBRvTh6rRKUAKs"]
}

#高级查询
GET test/students/_search?q=age:[20 TO 40]
#高级查询+排序
GET test/students/_search?q=age:[20 TO 40]&sort=age:desc
#高级查询+排序+分页
GET test/students/_search?q=age:[20 TO 40]&sort=age:desc&from=1&size=2
#高级查询+排序+分页+截取字段
GET test/students/_search?q=age:[20 TO 40]&sort=age:desc&from=1&size=2&_source=name,age

3.DSL

    ①DSL认识

            由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现.

                查询字符串模式:GET itsource/employee/_search?q=fullName:小明

                DSL模式: GET itsource/employee/_search

                                {

                                    "query" : {

                                       "match" : {

                                          "fullName" : "小明"

                                        }

                                }

        对于简单查询,使用查询字符串比较好,但是对于复杂查询,由于条件多,逻辑嵌套复杂,查询字符串不易组织与表达,且容易出错,因此推荐复杂查询通过DSL使用JSON内容格式的请求体代替。

        ②组成 

            dsl=dsl查询+dsl过滤

  dsl过滤简单理解为就是精确查询,而dsl查询是模糊查询(like).由于查询需要做相关度排序,并且过滤可以缓存.所有过滤的效率高于查询.所以只有必须要用查询的时候才用它(模糊查询),否则都用过滤.

dsl查询

#dsl查询-->高级查询+分页+排序+截取字段
GET test/students/_search
{
  "query": {
    "match_all": {
      
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 2, 
  "_source": ["name","age"]
}

dsl过滤

#dsl过滤
GET test/students/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {
            
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 10,
            "lte": 40
          }
        }
      }
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值