基本命令说明
方法 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":{}
}
}
}