美文网首页elasticsearch
elasticsearch常用命令(使用kibana)

elasticsearch常用命令(使用kibana)

作者: virtual灬zzZ | 来源:发表于2022-02-21 22:28 被阅读0次

基于版本es7.17,kibana7.17

注意:更复杂的就要使用DSL,以下都是简单的语法

测试分词器
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "梦想家"
}
查询索引列表
GET /_cat/indices?v
获取索引的信息
GET /llc
删除索引,多个索引用逗号分隔开
DELETE test_index,test_shard_index
新建索引,并制定主分片和备份分片数
PUT test
{
  "settings": {
    "number_of_shards": 1
    , "number_of_replicas": 2
  }
}
添加数据,如果没有id会报错
PUT /test/_doc/1 
{
  "name" : "doge",
  "age": 13
}

PUT /test/_doc/2
{
  "name":"dogger",
  "age":4
}
清空索引下所有数据
POST /llc/_delete_by_query
{
  "query":{
    "match_all":{}
  }
}
添加数据,指定id
POST /test/_doc/2
{
  "name": "donkey"
}

POST /test/_doc/3
{
  "name":"lusty",
  "age": 4
}

POST /test/_doc/4
{
  "name":"lusty",
  "age": 4
}
put没有id的话是新增不了的,不会默认给生成一个
PUT /test/_doc
{
  "name": "lily",
  "age": 6
}
添加数据,不指定id,默认会生成一个字符串id
POST /test/_doc
{
  "name": "lily",
  "age": 6
}
id=3已经存在,post的话是直接完全覆盖,只剩下age属性,连之前的name属性都没了
POST /test/_doc/3
{
  "age": 6
}
id=4已经存在,put的话是直接完全覆盖,只剩下age属性,连之前的name属性都没了
PUT /test/_doc/4
{
  "name":"习惯"
}
id=4已经存在,post的话是直接完全覆,连之前的age,name属性都没了,只有新的属性class
PUT /test/_doc/4
{
  "class":"课室"
}
新增一个数据id=5
POST /test/_doc/5
{
  "name":"lusty",
  "age": 4
}
新增一个数据id=6
POST /test/_doc/6
{
  "name": "lust",
  "age": 3
}
这样结果是updated,2个字段都被更新
PUT /test/_doc/5
{
  "name": "boyzz",
  "age":181
}
这样结果是updated,2个字段都被更新
POST /test/_doc/5
{
  "name": "lop",
  "age":54
}
乐观锁方式,使用if_seq_no和if_primary_term来更新,任一不匹配都不会更新成功
PUT /test/_doc/6?if_seq_no=22&if_primary_term=1
{
  "name": "张梅",
  "age": 46
}
id=4,又使用_create,报错存在冲突
POST /test/_doc/4/_create
{
  "name": "嘻嘻"
}
id=4,又使用_create,报错存在冲突
PUT /test/_doc/4/_create
{
  "name": "嘻嘻"
}
put和post在正常情况下都是全量更新,并不是局部更新,使用_update,且body中包含doc,就能局部更新,还可以新增属性;而使用put不行,它不能带_update
POST /test/_doc/6/_update
{
  "doc": {
    "name": "小马驹",
    "birth": "2021-10-18"
  }
}
id不存在,报错missing
POST /test/_doc/98/_update
{
  "doc": {
    "name": "小马驹",
    "birth": "2021-10-18"
  }
}
根据id获取数据
GET /test/_doc/6
在同一index、type批量获取,当然可以在不同的index、type下获取,这里不展开,详细查询官网
GET /test/_doc/_mget
{
  "ids": [1,6]
}
批量执行命令

/**

  • 格式
  • { action: { metadata }}\n
  • { request body }\n
  • { action: { metadata }}\n
  • { request body }\n
    ...
    */
//只有一条记录
POST /_bulk
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title":    "Cannot create - it already exists" }
{ "index":  { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title":    "But we can update it" }
GET /website/blog/123
找寻不存在的数据
GET /test/_doc/99 
根据id删除数据
DELETE /test/_doc/99
查询索引下所有数据
GET /test/_search

模拟的数据

POST /test/_doc/10
{
  "name": "第十个",
  "age":10
}

POST /test/_doc/11
{
  "name": "第十一个",
  "age":11
}

POST /test/_doc/12
{
  "name": "第十二个",
  "age":12
}

POST /test/_doc/13
{
  "name": "第十三个",
  "age":13
}

POST /test/_doc/14
{
  "name": "第十四个",
  "age":14
}
指定搜哪些字段,如果有的数据没有这个字段,也是搜出来,就是空而已,默认搜索是搜10条
GET /test/_doc/_search?_source=name
分页
GET /test/_doc/_search?_source=name&size=5&from=0
某个字段包含某关键字
GET /test/_doc/_search?q=name:第十
数字的话,会是进行等于的,不是包含,所以没有age=1的数据的话结果为空
GET /test/_doc/_search?q=age:1
上面搜不到,可以查看下索引的各个字典mapping的类型,加深了解,各种类型的匹配并不相同
GET /test/_mapping
查新数字范围,TO必须大写
GET /test/_doc/_search?q=age[12 TO 15]
这样就不行了,字符串不可以这样
GET /test/_doc/_search?q=name[十一 TO 十三]
查询大于等于
GET /test/_doc/_search?q=age:>=13
排序
GET /test/_doc/_search?q=name:第十&sort=age:desc
精确匹配日期,入库的时候,birth用yyyy-MM-dd就被认为是date日期模式,由_mapping得知
GET /test/_doc/_search?q=birth:2021-10-18

相关文章

网友评论

    本文标题:elasticsearch常用命令(使用kibana)

    本文链接:https://www.haomeiwen.com/subject/qwvvlrtx.html