1、Kibana的安装、配置及使用

本文将基于Kibana来讲解,再次之前需要安装Kibana工具。

  1. 进入Elasticsearch官网下载Kibana:https://www.elastic.co/downlo...,需要注意的是Kibana的版本跟随着Elasticsearch的版本,所以需要下载跟你的Elasticsearch一致的版本。
  2. 解压kibana的压缩包,进入config目录下,修改kibana.yml文件中的elasticsearch.url参数,将localhost修改为你的Elasticsearch服务的IP。
  3. 启动bin目录下的kibana(基于Linux)或者bin目录下的kibana.bat(基于Windows)。
2、添加索引

添加索引

# ib是索引名
PUT /lib/ 
{
  "settings":{
     "index":{
        "number_of_shards": 5, # 分片数
        "number_of_replicas": 1 # 副本数
     }
  }
}

# 这样创建的索引配置信息将是默认的
PUT lib2

# 返回结果
{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "lib"
}

查看索引的配置信息

GET /lib/_settings

# 返回结果
{
  "lib":{
     "settings":{
        "creation_date": "1525922783367",
        "number_of_shards": 5,
        "number_of_replicas": 1,
        "uuid": "ICnRur_NTn2s9sM04XE_rQ",
        "version": {
           "created": "6020499"
        },
        "provided_name": "lib"
     }
  }
}

# 查看所有索引的配置
GET _all/_setings

添加文档

# 分别为索引:_index、类型:_type、Id:_id,
# id不设置将会自动生成一个随机且唯一的字符串作为该文档的id(需要使用POST请求)
PUT /lib/user/1  
{
  "frist_name": "Jane",
  "last_name": "Smith",
  "age": 32,
  "about": "I like to collect rock albums",
  "interests": ["music"]
}

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 1,
  "result": "created", # 返回请求结果
  "_shards": {
     "total": 1,
     "successful": 1,
     "failed": 0
  },
  "_seq_no": 0,
  "_primary_trem": 1
}

查看文档

# 查看文档
GET /lib/user/1

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
     "frist_name": "Jane",
     "last_name": "Smith",
     "age": 32,
     "about": "I like to collect rock albums",
     "interests": [
        "music"
     ]
  }
}

# 查看部分字段
GET /lib/user/1?_source=age,about

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": { 
     "about": "I like to collect rock albums",
     "age": 32
  }
}

更新文档

# 覆盖式修改PUT
PUT /lib/user/1  
{
  "frist_name": "Jane",
  "last_name": "Smith",
  "age": 36, # 原本的age是32
  "about": "I like to collect rock albums",
  "interests": ["music"]
}

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 2, # 更新版本发生了改变
  "result": "updated", # 返回请求结果发生了改变
  "_shards": {
     "total": 1,
     "successful": 1,
     "failed": 0
  },
  "_seq_no": 1, //
  "_primary_trem": 1
}

# 直接更新
POST /lib/user/1/_update
{
  "doc":{
     "age": 30
  }
}

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 3, # 更新版本再次发生了改变
  "result": "updated", # 返回请求结果依然为updated
  "_shards": {
     "total": 1,
     "successful": 1,
     "failed": 0
  },
  "_seq_no": 2,
  "_primary_trem": 1
}

更新文档对并发问题的处理
使用POST方式进行更新,当出现并发问题时,内部使用的时乐观锁(使用version,通过版本控制来解决并发冲突的问题——查看Elastic search 版本控制)。
还可以使用retry_on_conflict(设置数值表示的重复该动作的次数);如果当前线程对文档的更新失败了,并设置了retry_on_conflict,将重新获取文档数据和版本信息进行更新

POST /lib/user/4/_update?retry_on_conflict=3&version=5

删除索引

# 删除一个文档
DELETE /lib/user/1

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 4, # 更新版本再次发生了改变
  "result": "deleted", # 返回请求结果deleted
  "_shards": {
     "total": 1,
     "successful": 1,
     "failed": 0
  },
  "_seq_no": 3,
  "_primary_trem": 1
}

# 此时再次获取id为1的文档
GET /lib/user/1

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "found": false
}

# 删除一个索引
DELETE /lib

# 返回结果
{
  "acknowledged": true
}

迷途码界
0 声望1 粉丝

一些原理解读,经验分享