ElasticSearch学习(1) 基础操作

ElasticSearch学习(1) 基础操作_第1张图片

目前使用的ES版本是7,借用下其他的文档。说明下ES的存储。

ES首先是index 对应的是数据库,7以前有type的概念,7没有type的概念,也就是说现在ES7

一个库(index)只有一个表(type)。

一个表(type)可以有多行(doc)

一行(doc)有多列(mapping)

好了开始基础操作!

我们的操作无非是增删改查, 增对的就是库表(index),字段名和属性(mapping),每一行的值(doc

index操作

#增加索引 i_dw_cc_test
put i_dw_cc_test

#查看索引
get i_dw_cc_test

#删除索引 i_dw_cc_test
delete i_dw_cc_test

mapping操作

#查看映射 如果我们先存数据,es的时候会默认字段都是keyword 后面不能修改
get i_dw_cc_test/_mapping

#创建映射  报错了mapper [name] cannot be changed from type [keyword] to [text]
put  i_dw_cc_test/_mapping
{
 "properties": {
 "id":{"type": "keyword","index": true},
 "name":{"type": "text", "index": true},
 "sex":{"type": "keyword","index": true}
 }
}

 删除映射。

直接删除index就好

修改映射

_doc操作

#增加数据 以前可以指定type名 比如person 现在不行了
#post i_dw_cc_test/person
#{
#  "id":"1",
#  "name":"cc"
#}
#现在只能指定_doc 这里会随机生成一个id 这个id是给es管理的 你也可以指定
post i_dw_cc_test/_doc
{
  "id":"1",
  "name":"cc"
}

# 指定es的这条数据的id=1
post i_dw_cc_test/_doc/1
{
  "id":"1",
  "name":"cc1"
}
post i_dw_cc_test/_doc/2
{
  "id":"2",
  "name":"zbf2"
}
post i_dw_cc_test/_doc/3
{
  "id":"3",
  "name":"cclovezbf3"
}

#更新数据 全量覆盖
post i_dw_cc_test/_doc/1
{
  "id":"1",
  "name":"cc111111111",
  "sex":"man"
}
#修改数据部分覆盖 注意这里的请求体有个doc 我不知道这个为啥不省略
post i_dw_cc_test/_update/1
{
  "doc":{
      "name":"cc2222222222"
    }
}

#删除数据 es id=1的数据
delete i_dw_cc_test/_doc/1

#条件删除文档 注意这里的请求是post
post i_dw_cc_test/_delete_by_query
{
 "query":{
    "match":{
      "name":"cc1"
    }
  }
}

查询是重头戏

#查看数据 根据id 查询  select * from t where id =2 类似根据主键查询
get i_dw_cc_test/_doc/2

#查询所有数据 类似 select * from t
get i_dw_cc_test/_search
{
 "query": {
 "match_all": {}
 }
}

#查询数据 类似 select * from t where name like '%zbf2%'  这里会分词 不同于mysql模糊查询
#但是我这里是keyword不分词因为我先插入数据后mapping。。。暂时不实验了
get i_dw_cc_test/_search
{
 "query": {
    "match": {
      "name":"zbf2" 
    }
 }
}

#查询数据 类似 select * from t where name=1 or id =1
get i_dw_cc_test/_search
{
 "query": {
 "multi_match": {
 "query": "1",
 "fields": ["id","name"]
 }
 }
}

#精确查询  select * from t where name=zbf2
get i_dw_cc_test/_search
{
 "query": {
 "term": {
 "name": {
 "value": "zbf2"
 }
 }
 }
}
#精确查询 这里是terms  select * from t where name in (zbf2,cc)
get i_dw_cc_test/_search
{
 "query": {
 "terms": {
 "name": ["zbf2","cc"]
 }
 }
}

#精确查询加 指定字段  select id from  t where name in (zbf2,cc)
get i_dw_cc_test/_search
{
 "_source": ["id"], 
 "query": {
 "terms": {
 "name": ["cc"]
 }
 }
}

其余的一些查询

获取index的总数据量

GET /index_name/_count 

获取切片的大小

GET /_cat/shards?v
 

你可能感兴趣的:(elasticsearch,学习,大数据)