使用kibana操作ES
使用kibana操作ES
# GET:获取(查询)
# PUT:存放(新增)
# POST:增加(新增)
# DELETE:删除(删除)
# _update:更新(并不是一个关键字)
# _all:不允许使用(在6.x已经废弃了)
# 查看ES的状态
GET _cat/health
# 查看带表头的健康状态
GET _cat/health?v
# 查看集群中节点的状态信息
GET _cat/nodes
# 查看带表头的节点状态信息
GET _cat/nodes?v
# ES中之前有三大核心(Index,Type,Document)
# 虽然Type6.x版本已经不推荐使用了,但是并没有废弃还可以继续使用
# 查看Index的信息
GET _cat/indices
# 查看带表头的Index的信息
GET _cat/indices?v
# 创建Index
# 创建Index的命令只能用PUT,不能使用POST
# 语法规则: PUT /index的名称
# 是否创建成功会返回一个数据acknowledged—>如果是true,说明创建成功
# 会出现一个警告信息,但是不影响使用,告诉咱们在ES7.x版本之后,这个分区数据就从5变成1
# 在7.x版本之前使用的分区都是5
# 如果是常规创建,则不需要修改
PUT /test_index1
#创建type
# 有些公司还在使用,虽然在6.x中已经被废弃了(但是仍然可以使用)(废弃就相当于不推荐使用,但是没有被废除)
# 关于创建type有两种模式(PUT,POST),本质上没有任何的区别,只是创建出来的格式会发生变化
# 当使用PUT进行创建type的时候,可以自定义格式
# 当使用POST进行创建type的时候,必须要按照ES所提供的格式来进行创建
# PUT创建的语法规则:
# PUT /index名称(这个index一定不能存在) 创建type的语法
# 也就是说当创建type的时候,必须要先创建index,如果index已经存在了,则直接会抛出异常,告诉index已经存在了(所以一个type只能对应一个index,也就是说一个index下面只能有一个type)
# ES中是没有String类型的,所有String类型全部都是text类型
# ES中也没有int类型,只能Integer类型
PUT /test_index2
{
"mappings": {
"test_type1": {
"properties": {
"username" : {"type": "text"},
"password" : {"type" : "text"},
"age" : {"type" : "integer"}
}
}
}
}
使用POST进行创建
# 语法规则:POST /index的名称(也不能存在)/type的名称{定义type的属性}
POST /test_index3/test_type1
{
"properties" : {
"username" : {"type" : "text"},
"salary" : {"type" : "double"},
"age" : {"type" : "integer"}
}
}
# 在这你一定得记明白,当使用POST来进行创建type的时候,所有的type字段的类型全部都不会生效,也就是说ES默认全部转换为text类型(也就是java中的String类型)
# 因为向ES的搜索库中所保存的数据有可能是double,有integer,有可能是long...,这么一来存储起来就比较麻烦,所以ES都会默认全部给你转换成String类型,然后进行存储,因为String这个类型是万能的
# 查询type
# 语法规则: GET /index的名称/_mapping/type的名称
GET /test_index4/_mapping/test_type5
# 实现ES中document的增删改查
# 向ES的type中添加一条数据
# 也有两种方式(POST, PUT)
# 当使用PUT来进行添加数据的时候,ES不会自动分配唯一索引(相当于数据库中的主键),需要你自己手动指定
# 语法规则: PUT /index的名称/type的名称/唯一索引的值{所需要添加的数据}
PUT /test_index2/test_type1/123456
{
"username" : "zhangsan",
"password" : "123456",
"age" : 17
}
# 使用POST来进行创建
# 语法规则: POST /index的名称/type的名称{所需要添加的数据}
# 也就是说当使用POST来进行添加数据的时候,不再需要自己编写id的值,由ES来进行自动分配(相当于在mysql数据库中设置了自增主键),但是ES中所使用的这个id值是UUID
# 43tYA3IBSGprRY6VtTHL
POST /test_index3/test_type1
{
"username" : "lisi",
"salary" : 2000.3,
"age" : 18
}
# 因为在关系型数据库中,使用insert的sql语句向某一张不存在的表添加数据的时候,会报错,但是在ES中是否会报错呢?不会报错
# ES比较奇怪,当去插入一条数据的时候,如果index和type不存在,ES会自动给你按照你添加数据的格式创建index和type以及type中的类型
# 5HteA3IBSGprRY6VkzEr
# 这里是有利有弊的,之前在这我就被坑了一次
# 方便于程序员了,在使用java的时候不再需要创建type了(我觉得是弊大于利)
POST /test_index4/test_type6
{
"goods_name" : "手机",
"goods_price" : 4501.6,
"goods_type" : "手机",
"goods_description" : "简单描述"
}
# 查询document
# 语法规则: GET /index的名称/type的名称/id
# 相当于 select * from xxx where id = ?
GET /test_index2/test_type1/123456
# 只显示source中的数据
GET /test_index3/test_type1/43tYA3IBSGprRY6VtTHL/_source
# 删除某个type中的数据
# 语法规则:DELETE /index的名称/type的名称/id
DELETE /test_index2/test_type1/123456
# 修改某个document数据
# 修改的时候必须要使用POST关键字,不能使用PUT,而且还需要使用_update来进行配合
# 语法规则: POST /index的名称/type的名称/id{修改的数据}
POST /test_index3/test_type1/43tYA3IBSGprRY6VtTHL/_update
{
"doc": {
"username" : "wangwu",
"salary" : 3000
}
}
GET _search
{
"query": {
"match_all": {}
}
}
下一篇: tesseract自动化训练批量训练字库
推荐阅读
-
VC++中使用ADO方式操作ACCESS数据库(转)
-
ES6使用let命令更简单的实现块级作用域实例分析
-
Hello World,使用OpenGL ES绘制一个三角形
-
PHP中怎么使用Imagick操作PSD文件
-
JavaScript使用指针操作实现约瑟夫问题实例_javascript技巧
-
php操作memcache的使用【转】,php操作memcache
-
php中mysql连接和基本操作代码(快速测试使用,简单方便)_PHP
-
react开发中如何使用require.ensure加载es6风格的组件
-
MySQL使用Federate引擎实现操作本地表映射远程操作表
-
javascript dom操作之cloneNode文本节点克隆使用技巧_javascript技巧