执行环境在kibana中
索引的操作
创建索引库
语法
PUT /索引名称 {
"settings": {
"属性名": "属性值"
}
}
settings:索引库设置,可以定义索引库的属性 比如分片数 副本数等,这里先不设置
判断索引是否存在
HEAD /索引名称
查看索引
单个索引
GET /索引名称
批量查看
GET /索引名称1,索引名称2
查看全部索引1
GET _all
查看全部索引2
GET /_cat/indices?v
green:索引的所有分片都正常分配。
yellow:至少有一个副本没有得到正确的分配。
red:至少有一个主分片没有得到正确的分配。
打开和关闭索引
POST /索引名称/_open
POST /索引名称/_close
关闭之后就不能查询了
删除索引
DELETE /索引名称1,索引名称2,索引名称3...
映射操作
Elasticsearch7.x取消了索引type类型的设置,不允许指定类型,默认为_doc,但字段仍然是有的,我们需要设置字段的约束信息,叫做字段映射 (mapping)。
创建映射字段
PUT /索引库名/_mapping
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
字段名自己定义
属性包括:
type:类型,可以是text、long、short、date、integer、object等
index:是否索引,默认为true
store:是否存储,默认为false
analyzer:指定分词器
等等
官网查看:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/mapping-params.html 示例:向worker_index设置字段映射
PUT /worker_index/_mapping/
{
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word"
},
"job": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
查看映射字段
GET /索引名称/_mapping
查看所有索引映射关系
GET _mapping
GET _all/_mapping
修改映射关系
修改映射只能增加字段,做其它更改只能删除索引 重新建立映射
PUT /索引库名/_mapping
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
索引和映射一起创建
put /索引库名称
{
"settings":{
"索引库属性名":"索引库属性值"
},
"mappings":{
"properties":{
"字段名":{
"映射属性名":"映射属性值"
}
}
}
}
文档的操作
新增文档
指定id的新增文档
POST /索引名称/_doc/{id}
{
"field":"value"
}
不指定id的新增文档
POST /索引名称/_doc
{
"field":"value"
}
查看单个文档
GET /索引名称/_doc/{id}
查看所有文档
POST /索引名称/_search
{
"query": {
"match_all": {}
}
}
_source定制返回结果
让source只返回需要的结果
GET /worker_index/_doc/1?_source=name
更新文档
全部更新
只保留更新的字段,没有的字段就被删除了
PUT /索引名称/_doc/{id}
{
"field":"value"
}
把刚才新增的请求方式POST改为PUT,就是修改了,不过修改必须指定id,id对应文档存在,则修改, id对应文档不存在,则新增
查看一下,可以看到之前的job字段已经没有了
局部更新
只是修改某个字段
POST /索引名/_update/{id}
{
"doc":{
"field":"value"
}
}
查看一下,可以看到之前的字段还在
带乐观锁的更新
创建文档
PUT /test_index/_doc/4
{
"test_field": "test"
}
获取数据
GET /test_index/_doc/4
#返回
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "4",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"test_field" : "test"
}
}
更新
- 使用if_seq_no和 if_primary_term进行乐观锁控制
PUT /test_index/_doc/4?if_seq_no=0&if_primary_term=1
{
"test_field": "changed"
}
- external version进行乐观锁并发控制
这里version=2的版本号,要比上面get拿到的version的版本号大才能更新
PUT /test_index/_doc/4?version=2&version_type=external
{
"test_field": "changed"
}
删除文档
根据id删除
DELETE /索引名/_doc/{id}
根据查询条件删除
POST /索引库名/_delete_by_query
{
"query": {
"match": {
"字段名": "搜索关键字"
}
}
}
示例
POST /lagou-company-index/_delete_by_query
{
"query":{
"match":{
"name":"Jack"
}
}
}
删除所有文档
POST 索引名/_delete_by_query
{
"query": {
"match_all": {}
}
}