ES常用命令基础

本文详细介绍了Elasticsearch(ES)的基础命令,包括CRUD操作、文档管理,解析了ES的数据模型,强调了一个索引只能存一个类型,并讲解了分布式架构中的索引分片和副本分片的概念。此外,还提供了分词、创建索引带参数、索引映射、查看映射及删除索引等实例。

ES常用命令及相关实例

一. ES常用命令

命令含义
PUT增加/跟新
UPDATE改变
DELET删除
GET查询
POST查询/修改
HEAD改变/删除

二. ES数据模型

ElasticSearch含义
Index索引,由多个Document组成
Type索引类型,6.x中仅支持一个,以后将逐渐被移除
Document文档,由多个Field组成
Field字段,包括字段名与字段值

注:一个索引只能存一个类型

三. 文档(Document)管理

(1)文档是ES最小数据单元

  1. 原始数据
  • _source:原始JSON格式文档
  1. 文档元数据
  • _index:索引名
  • _type:索引类型
  • _id:文档编号
  • _version:文档版本号用于并发控制
  • _score:在搜索结果中的评分
    注:索引名称规范,只支持小写字母,不包括“\ / * ? " < > | ` (空格) , #”,“:”在7.0前支持,不能以“- _ +”开头,不能为“.”或“…”,不超过255字节
PUT demo.123	//创建索引
GET demo.123	//查看索引

在这里插入图片描述

(2)CRUD(增查改删)
在这里插入图片描述

(3)语法

PUT /索引/类型
PUT /索引/类型
{
	json串
}
POST /索引/类型/文档编号/_update
{
	"doc":{
		列名:值------------------------------精准修改其中某个列
	}
}
DELETE /索引
#查询所有
GET /索引/类型/_search 
#查询编号下所有
GET /索引/类型/编号/_search 
#查询所有,返回所有文档
GET /索引/类型/_search
{"query":{
	"match_all":{}
	}
}
#布尔匹配查询
GET /索引/类型/_search
{"query":{
	"match":{json串}
	}
}
GET /索引/类型/编号?_source=字段列表
GET /索引/类型/编号?_search?参数(q查询参数,sort排序参数)=字段列表:字段值/排序方向(desc,asc)
#查询记录数
GET /索引/类型/_count
  1. 批量操作增删改
POST /_bulk
{"create":{"_index":索引,"_type":类型,"_id":编号}}--------------------------必须写在同一行
{json串}
{"update":{"_index":索引,"_type":类型,"_id":编号}}
{"doc":{json串}}
{"delete":{"_index":索引,"_type":类型,"_id":编号}}
  1. 批量读取(不同索引下也可以读取)
GET /_mget
{ "docs":[{"_index":索引,"_type":类型,"_id":编号},...]}

在这里插入图片描述

四、ES分布式架构

  • 节点
  • 索引
  • 分片
  • 副本

索引分片(Shard)

  1. 分片
    索引是指向一个或多个分片的逻辑命名空间
    最小级别的工作单元,一个Lucene实例(倒排索引)
  2. 主分片
    静态不可变
    索引首先被存储在主分片中,然后复制相应的副本分片
  3. 副本分片
    动态可修改
    用于故障转移,一旦主分片失效,副本分片晋升为主分片

五、实例

(1)分词

  1. whitespace按空格来分
GET _analyze
  {
    "analyzer":"whitespace",
    "text":["我要 回家","我要 回家"]
  }

在这里插入图片描述

  1. standard按标准来分
GET _analyze
{
  "analyzer":"standard",
  "text":["我要回家","我要回家"]
}

在这里插入图片描述

  1. ik中文分词器
GET _analyze
{
  "analyzer":"ik_smart",
  "text":["我要 回家","我要 回家"]
}

在这里插入图片描述
(2)页面展示

  • ip:端口/索引/类型/编号/_source
    在这里插入图片描述

(3) 带参数创建索引

PUT demo.1234
{
    "settings" : {
        "index" : {
            "number_of_shards" : 2,  ---------------主分片数量默认为5
            "number_of_replicas" : 2 ----------------副本数量,默认为1
        }
    }
}

(4)索引的映射

  1. 定义字段名、字段类型(text、keyword、date、long、double、boolean、ip、completion、geo_point……)
  2. 定义索引规则
    在这里插入图片描述

(5)查看索引映射

GET demo.12345/_mapping

(6) 删除索引

DELETE demo.12345

(7)查询

#match_phrase 模糊查询 ,短语匹配查询
GET def/stu/_search
{
  "query":{
    "match_phrase":{
      "name": "Da"
    }
  }
}
#短语前缀匹配查询
GET def/stu/_search
{
  "query":{
    "match_phrase_prefix":{
      "name": "D"
    }
  }
}
#multi_match:多字段匹配查询
GET def/stu/_search
{
  "query":{
    "multi_match":{
      "query": "Da Vinci like music", 
      "fields": ["name","interest"]
    }
  }
}

#term:词条查询(必须小写)
GET def/stu/_search
{
  "query":{
    "term":{
        "name":"da"
    }
  }
}
#terms:多词条查询
GET def/stu/_search
{
  "query":{
    "terms":{
        "interest":["novel","music"]
    }
  }
}
#range:范围查询
GET def/stu/_search
{
  "query":{
    "range":{
      "gpa": {
        "gte": 4.1,
        "lte": 4.8
      }
    }
  }
}
#bool:布尔查询
GET /def/stu/_search
{
  "query": {
    "bool": {
      "must": [{"match": { "name": "Da" }},{"match": { "gpa": 4.8 }} ],
      "must_not": [ {"match": { "id": "6" }}],
      "should": [ {"match_phrase_prefix": { "interest": "music" }},{"match_phrase_prefix": { "interest": "abc" }}],
      "minimum_should_match": 1           -----------------should满足的最小数
    }
  }
}
#from+size浅分页查询
GET def/stu/_search
{
  "query":{
    "match_all": {}
  }
  ,"size": 2
  ,"from": 1
}
#scroll深分页查询,3m表示scroll_id3分钟有效
GET def/stu/_search?scroll=3m
{
  "query":{
    "match_all": {}
  }
  ,"size": 3
  ,"from": 0
}
GET _search/scroll
{
  "scroll_id":"...",
  "scroll":"3m"
}
#按条件实现倒排与正排查询
GET /def/stu/_search?sort=id:desc----------------倒排

GET /def/stu/_search?sort=id:asc------------------正排

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值