ElasticSearch:Rest风格增删改查,简单、复杂搜索

基本命令说明


方法               url地址						            描述
===================================================================================
PUT               /索引名称/类型名称/文档id			        创建文档(指定文档id)
-----------------------------------------------------------------------------------
POST              索引名称/类型名称				            创建文档(随机文档id)
-----------------------------------------------------------------------------------
POST              索引名称/类型名称/文档id/_update	            修改文档
-----------------------------------------------------------------------------------
DELETE            索引名称/类型名称/文档id			            删除文档
-----------------------------------------------------------------------------------
GET               索引名称/类型名称/文档id			            查询文档通过文档id
-----------------------------------------------------------------------------------
POST              索引名称/类型名称/_search		   	        查询所有数据
===================================================================================

实操

本篇文章使用的是 kibana 进行实操

添加数据


PUT /zhouzhou/zsy/3
{
   "name": "周周",
   "age": 18
}

查看数据


GET zhouzhou/zsy/1

更新数据


#这种方式如果不传递值就会被覆盖,不推荐
PUT /zhouzhou/zsy/1
{
   "name": "扒皮",
   "age": 18
}

#推荐使用这种更新方式  灵活性更好
POST zhouzhou/zsy/1/_update
{
  "doc":{
    "name":"周周"
  } 
}

删除数据


GET zhouzhou/zsy/1

简单搜索


#简单的条件查询,搜索条件是带 “周” 的
GET zhouzhou/zsy/_search?q=

复杂搜索


#复杂的条件查询,搜索条件是 name 字段带 “周” 的
GET zhouzhou/zsy/_search
{
  "query":{
    "match": {
      "name": "周"
    }
  }  
}

#输出结果的过滤,这样过滤掉,只会查询 name 字段
GET zhouzhou/zsy/_search
{
  "query":{
    "match": {
      "name": "周"
    }
  },
  "_source":["name"]
}

#排序,搜索条件是 name 字段带 “周” 的,并且按照 age 降序,( asc升序 | desc降序 )
GET zhouzhou/zsy/_search
{
  "query":{
    "match": {
      "name": "周"
    }
  },
  "sort":[
      {
        "age":{
        "order": "desc"
        }
      }
   ]
}

#分页查询,一共两个参数:from 从第几条数据开始,size 每页数据显示多少条;下标从0开始
GET zhouzhou/zsy/_search
{
  "query":{
    "match": {
      "name": "周"
    }
  },
  "from":0,
  "size":2
}

#布尔值查询:
#must,所有的条件都要符合,相当于 mysql中的 where age=xx and name=xx 多条件查询
GET zhouzhou/zsy/_search
{
  "query":{
    "bool": {
      "must":[
        {
          "match": {
          "name": "周周"
          }
        },
        {
          "match": {
          "age": 18
          }
        }
      ]
    }
  }
}

#must_not,不等于 相当于 mysql 中的 where age != 3
GET zhouzhou/zsy/_search
{
  "query":{
    "bool": {
      "must_not":[
        {
          "match": {
            "name":"周周"
          }
        }
      ]
    }
  }
}

#过滤器filter 可以使用filter 进行数据过滤,gt:大于  gte:大于等于 :lt:小于  lte:小于等于
GET zhouzhou/zsy/_search
{
  "query":{
    "bool": {
      "must":[
        {
          "match": {
            "name":"周"
          }
        }
      ],
      "filter":{
        "range": {
          "age": {
            "gte": 18
          }
        }
      }
    }
  }
}

#多个条件,多个条件使用空格隔开,只要满足其中一个结果既可以查出
GET zhouzhou/zsy/_search
{
  "query": {
    "match": {
      "name": "周 瑜"
    }
  }
}

#精确查询
#keyword(不会被分词解析)
GET _analyze
{
  "analyzer": "keyword",
  "text": "周瑜"
}
#standard(会被分词解析)
GET _analyze
{
  "analyzer": "standard",
  "text": "周瑜"
}
#term查询是直接通过倒排索引指定的词条进程精确查找的
GET zhouzhou/zsy/_search
{
  "query": {
    "term": {
      "name": "周"
    }
  }
}

#多个值匹配精确查询
GET zhouzhou/zsy/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "name": "周"
          }
        },
        {
          "term": {
            "name": "瑜"
          }
        }
      ]
    }
  }
}

#高亮查询,默认使用 <em> 标签包裹的 ( <em> 周 </em> )
GET zhouzhou/zsy/_search
{
  "query": {
    "match": {
      "name": "周"
    }
  },
  "highlight": {
    "fields": {
      "name":{}
    }
  }
}

#自定义高亮条件,( <span class='span' style='color:red'> 周 </span> )
GET zhouzhou/zsy/_search
{
  "query": {
    "match": {
      "name": "周"
    }
  },
  "highlight": {
    "pre_tags": "<span class='span' style='color:red'>",
    "post_tags": "</span>",
    "fields": {
      "name":{}
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值