ES常用命令基础

目录

  • ES常用命令及相关实例
    • 一. ES常用命令
    • 二. ES数据模型
    • 三. 文档(Document)管理
    • 四、ES分布式架构
      • 索引分片(Shard)
    • 五、实例

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	//查看索引

ES常用命令基础_第1张图片

(2)CRUD(增查改删)
ES常用命令基础_第2张图片

(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常用命令基础_第3张图片

四、ES分布式架构

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

索引分片(Shard)

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

五、实例

(1)分词

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

ES常用命令基础_第4张图片

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

ES常用命令基础_第5张图片

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

ES常用命令基础_第6张图片
(2)页面展示

  • ip:端口/索引/类型/编号/_source
    ES常用命令基础_第7张图片

(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. 定义索引规则
    ES常用命令基础_第8张图片

(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------------------正排

你可能感兴趣的:(elasticsearch)