ElasticSearch索引常见的操作API方法

ES的使用采用的是api接口式的调用,我们可以把ES理解为类似于mysql的数据库,只不过它的语法不同而已。

索引的基本操作

创建索引(数据库表)

创建一个空白索引,没有任何数据与配置;
此处没有制定索引类型,所以类型默认为“_doc”;
7版本之后单个索引只能有一个类型;

PUT /demo01

删除索引

DELETE /demo02

文档增删改

基本的请求格式为:
/索引名/索引类型/

文档新增

PUT /demo01/_doc/2
{
  "name":"王五",
  "age":22
}

可以不指定文档id,由es生成,但要注意必须使用post;

POST /demo01/_doc/
{
  "name":"王wqe五",
  "age":22
}

文档修改

需要注意:如果此种方式修改时只指定部分字段,其他字段会消失

PUT /demo01/_doc/1
{
  "name":"往往",
  "age":99
}

那么,安全的部分字段修改方式:

POST /demo01/_doc/1/_update
{
  "doc":{
   "name":"往6往"
  }
}

文档删除

DELETE /demo01/_doc/eLVqy4oBq3Z8H-ZbVC_c

文档查询

查询所有文档

GET /{索引名}/{类型名}/_search
//例:GET /blog/_search   
//索引名:blog
//类型名:_loc 被省略

匹配查询(match)

match查询会根据预设的分词器进行分词并查询返回结果

GET /blog/_search
{
  "query": {
    "match": {
      "title": "c"
    }
  }
}

根据条件搜索

GET /{索引名}/{类型名}/_search?q=id:1000
//例:GET /blog/_search?q=id:1000
//q=id:1000 等价于 where id=1000

可以把查询条件封装为JSON字符串

GET /blog/_search
{
  "query": {
    "term": {
      "id": {
        "value": 1001
      }
    }
  }
}

查询部分字段

查询blog索引中id=1001的数据,并返回目标数据的id和title字段;

GET /blog/_search
{
  "query": {
    "term": {
      "id": {
        "value": 1001
      }
    }
  }
  , "_source": ["id","title"]   //通过"_source"控制返回字段
}

分页查询

查询blog索引中从第一条数据开始返回一页20条的数据;
from:首条数据起始行;
size:每页记录条数

GET /blog/_search
{
   "_source": ["id","title"],
  "from": 1,
  "size": 20
}

范围查询(range)

查询blog索引中id大于1000小于1002的数据;
gt:大于;
lt:小于;
gte:大于等于;
lte:小于等于;

GET /blog/_search
{
  "query": {
    "range": {
      "id": {
        "gt": 1000,
        "lt": 1002
      }
    }
  }
}

精准查询(trem)

查询blog索引中id等于1000的数据;

GET /blog/_search
{
  "query": {
    "term": {
      "id": {
        "value": "1000"
      }
    }
  }
}

排序(sort)

查询blog索引数据并且以id降序返回;

GET /blog/_search
{
  "sort": [
    {
      "id": {
        "order": "desc"
      }
    }
  ]
}

多条件查询

must 等价于and

查询blog索引中,id为1000,1001,1002并且title包含java的文档;

GET /blog/_search
{
  "query": {
   "bool": {
     "must": [
       {
         "terms": {
           "id": [
             "1000",
             "1001",
             "1002"
           ]
         }
       },
       {
          "match": {
            "title": "java"
          }
       }
     ]
   }
  }
}
should等价于or

查询blog索引中,id为1000,1001或者title包含java的数据;

GET /blog/_search
{
  "query": {
   "bool": {
     "should": [
       {
         "terms": {
           "id": [
             "1000",
             "1001"
           ]
         }
       },
       {
         
          "match": {
            "title": "java"
          }
       }
     ]
   }
  }
}
must-not 等价于!=

查询blog索引中,id不为1000,1001且title不包含java的数据;

GET /blog/_search
{
  "query": {
   "bool": {
     "must_not": [
       {
         "terms": {
           "id": [
             "1000",
             "1001"
           ]
         }
       },
       {
         
          "match": {
            "title": "java"
          }
       }
     ]
   }
  }
}
高亮显示

其实就是通过前后缀拼接html语法,来设置前端展示数据时的字体颜色;

GET /blog/_search
{
  "query": {
   "term": {
     "id": {
       "value": "1000"
     }
   }
  }
  , "highlight": {
    "pre_tags": "<font color='red'>",
    "post_tags": "</font>",
    "fields": {
      "id": {}
    }

  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值