1、Kibana的安装、配置及使用
本文将基于Kibana来讲解,再次之前需要安装Kibana工具。
- 进入Elasticsearch官网下载Kibana:https://www.elastic.co/downlo...,需要注意的是Kibana的版本跟随着Elasticsearch的版本,所以需要下载跟你的Elasticsearch一致的版本。
- 解压kibana的压缩包,进入config目录下,修改kibana.yml文件中的elasticsearch.url参数,将localhost修改为你的Elasticsearch服务的IP。
- 启动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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。