菜鸟先飞之Elasticsearch应用

2020-06-23
连接上集群后现在我们来使用 ELASTICSEARCH进行学习
-ES数据模型
Index:索引,由多个Document组成
Type:索引类型,6.x中仅支持一个,以后将逐渐被移除
Document:文档,由多个Field组成
Field:字段,包括字段名与字段值

-文档元数据:
_index:索引名
_type:索引类型
_id:文档编号
_version:文档版本号用于并发控制
_score:在搜索结果中的评分

集群连接完毕后,打开浏览器输入:master的IP地址进行连接
先按照以下步骤新增一个索引
-索引名称规范
(1) 只支持小写字母
(2)不包括“\ / * ? " < > | ` (空格) , #”
(3)“:”在7.0前支持
(4) 不能以“- _ +”开头
(5) 不能为“.”或“…”
(6)不超过255字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、put 增加 / 更新

//方法一

使用head插件向ES中新增一条数据并进行数据浏览

步骤如上:
若再次点击提交请求,则当前插入的内容会将前一条数据覆盖(更新)
//方法二

通过kibana插入数据

在这里插入图片描述带参数创建索引

PUT demo
{
    "settings" : {
        "index" : {
            "number_of_shards" : 2,//主分页
            "number_of_replicas" : 2 //副本
        }
    }
}

在这里插入图片描述
完事运行绿色三角
显示左侧若能正常显示则插入成功
在这里插入图片描述

POST /_buik -->批量插入

这里要用到bulk
—必须写在同一行
{“ceate”:{"_index":索引,“_type”:类型,“_id”:编号}}
PUT /索引/类型
PUT /索引/类型/1
{
json串
}
id:学生编号
studentNo:学号
name:姓名
major:专业
gpa:成绩平均绩点
yearOfBorn:出生年
classOf:年届
interest:兴趣爱好

POST /_bulk{
“create”:{"_index":“def”,"_type":“user”,"_id":“2”}}{“id”: 2, “studentNo”: “TH-CHEM-2016-C001”, “name”: “Jonh Smith”, “major”:“Chemistry”, “gpa”: 4.8, “yearOfBorn”: 2000, “classOf”: 2016, “interest”: “soccer, basketball, badminton, chess”}{“create”:{"_index":“def”,"_type":“user”,"_id":“3”}}{“id”: 3, “studentNo”: “TH-PHY-2018-C001”, “name”: “Isaac Newton”, “major”:“Physics”, “gpa”: 3.6, “yearOfBorn”: 2001, “classOf”: 2018, “interest”: “novel, soccer, cooking”}
{“create”:{"_index":“def”,"_type":“user”,"_id":“4”}}{“id”: 4, “studentNo”: “TH-PHY-2018-C001”, “name”: “Isaac Newton”, “major”:“Physics”, “gpa”: 2.6, “yearOfBorn”: 2002, “classOf”: 2018, “interest”: “novel, soccer, cooking”}
{“create”:{"_index":“def”,"_type":“user”,"_id":“5”}}{“id”: 5, “studentNo”: “TH-PHY-2018-C001”, “name”: “Isaac Newton”, “major”:“Physics”, “gpa”: 1.6, “yearOfBorn”: 2003, “classOf”: 2018, “interest”: “novel, soccer, cooking”}{“create”:{"_index":“def”,"_type":“user”,"_id":“6”}}{“id”: 6, “studentNo”: “TH-PHY-2018-C001”, “name”: “Isaac Newton”, “major”:“Physics”, “gpa”: 0.6, “yearOfBorn”: 2004, “classOf”: 2018, “interest”: “novel, soccer, cooking”}

二、update改变

POST /索引/类型/1/_update
{
“doc”:{
列名:值//精准修改某个列
}
}

GET def/user/4/_update
{
    "doc":{
        "name":"Da smith"
    }
}

在这里插入图片描述

三、delete 删除

DELETE def/user/1 删除内容第一条的内容
ps:正常都是删除某一条的数据
DELETE def 删除索引

四、get 查询

GET /索引/类型/_search 查询所有
get def/user/_search
在这里插入图片描述
GET /索引/类型/?_source=字段名:desc
还可用来排序

GET def/user/_search?sort=classOf:desc 
ps:按学籍降序排列

在这里插入图片描述
GET /索引/类型/_search
{“query”:{match_all}:{}}
ps:返回所有文档

GET /索引/类型/_search
{
“query”:{
“match”{json串}
}
}

分组查询

GET /def/user/_search
{
  "query": {
    "match": {
      "name": "smith"
    }
  }
}

在这里插入图片描述

条件查询查询指定数据

ET /def/user/1

在这里插入图片描述

match_phrase:短语匹配查询

#分词结果为smith,如果name字段值中依次包含所有分词,那么返回该文档
#忽略大小写
GET def/user/_search
{
    "query": {
        "match_phrase": {
          "name":"da"
        }
    }
}

在这里插入图片描述

multi_match:多字段匹配查询

查询约翰喜欢篮球(模糊查询)
在这里插入图片描述

range:范围查询

#gte大于等于  gt大于
#lte小于等于  lt小于
GET def/user/_search
{
  "query": {
    "range": {
      "gpa": {
        "gt": 0.6,
        "lte": 5.0
      }
    }
  }
}

在这里插入图片描述

布尔查询

查询喜欢“cooking”且不在1995-2000间出生的学生

#must 必须是
#must_not 不能是
GET def/user/_search
{
    "query": {
      "bool": {
        "must": {
            "match": { "interest": "cooking"} },
        "must_not": {
            "range": { "yearOfBorn": { "lt": 1995, "gt": 2000 }}}
      }
    }
}

在这里插入图片描述
姓名为“john”
在2016年后入学
爱好“basketball"

GET def/user/_search
{
    "query": {
      "bool": {
        "must": [{
            "match": { "name": "jonh" }},
          {"range": { "classOf": { "gte": 2016 } }},
          {"match": { "interest": "basketball" }}
          ]
        }
      }
}

在这里插入图片描述

GET_mget查询(查询一个或多个


1、不同节点的查询
GET /_mget
{
“docs”:[
{
“_index”:“abc”,
“_type”:“article”,
“_id”:“4”
},
{
“_index”:“abc”,
“_type”:“article”,
“_id”:“5”
},
{
“_index”:“logstash-2020.06.19”,
“_type”:“doc”,
“_id”:“9b7AynIBT_TKQdkeS4qX”
}
]
}
2、相同节点查询
方式一:
GET /_mget
{
“docs”:[
{
“_index”:“abc”,
“_type”:“article”,
“_id”:“4”
},
{
“_index”:“abc”,
“_type”:“article”,
“_id”:“5”
},
]
}

方式二:
GET abc/article/_mget
{
“docs”:[
{
“_id”:“4”
},
{
“_id”:“5”
}
]
}

方式三:
GET abc/article/_mget
{
“_id”:[“1”,“2”]
}

五、post 查询/改变

六、其他

分词器

#stardard 默认字节分词
POST _analyze
{
  "analyzer": "standard",
  "text":["我要回家","我y要回家"]
}

在这里插入图片描述

#whitespace 根据空格分词
POST _analyze
{
  "analyzer": "whitespace",
  "text":["我要回家","我y要 回家"]
}

在这里插入图片描述

分页

from+size浅分页

#分页 显3个从0开始到3
GET def/user/_search
{
  "query": {
    "match_all": {}
  }
  , "size": 3
  , "from": 0
}

scroll深分页

#保存结果快照
GET def/user/_search?scroll=3m
{
  "query": {
    "match_all": {}
  }
  , "size": 2
  , "from": 0
}

在这里插入图片描述

#调用 注意时效性
GET def/user/_search
{
    "query": {
      "bool": {
        "must": [{
            "match": { "name": "jonh" }},
          {"range": { "classOf": { "gte": 2016 } }},
          {"match": { "interest": "basketball" }}
          ]
        }
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值