ES常用命令及相关实例
一. ES常用命令
| 命令 | 含义 |
|---|---|
| PUT | 增加/跟新 |
| UPDATE | 改变 |
| DELET | 删除 |
| GET | 查询 |
| POST | 查询/修改 |
| HEAD | 改变/删除 |
二. ES数据模型
| ElasticSearch | 含义 |
|---|---|
| Index | 索引,由多个Document组成 |
| Type | 索引类型,6.x中仅支持一个,以后将逐渐被移除 |
| Document | 文档,由多个Field组成 |
| Field | 字段,包括字段名与字段值 |
注:一个索引只能存一个类型
三. 文档(Document)管理
(1)文档是ES最小数据单元
- 原始数据
- _source:原始JSON格式文档
- 文档元数据
- _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
- 批量操作增删改
POST /_bulk
{"create":{"_index":索引,"_type":类型,"_id":编号}}--------------------------必须写在同一行
{json串}
{"update":{"_index":索引,"_type":类型,"_id":编号}}
{"doc":{json串}}
{"delete":{"_index":索引,"_type":类型,"_id":编号}}
- 批量读取(不同索引下也可以读取)
GET /_mget
{ "docs":[{"_index":索引,"_type":类型,"_id":编号},...]}

四、ES分布式架构
- 节点
- 索引
- 分片
- 副本
索引分片(Shard)
- 分片
索引是指向一个或多个分片的逻辑命名空间
最小级别的工作单元,一个Lucene实例(倒排索引) - 主分片
静态不可变
索引首先被存储在主分片中,然后复制相应的副本分片 - 副本分片
动态可修改
用于故障转移,一旦主分片失效,副本分片晋升为主分片
五、实例
(1)分词
- whitespace按空格来分
GET _analyze
{
"analyzer":"whitespace",
"text":["我要 回家","我要 回家"]
}

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

- 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)索引的映射
- 定义字段名、字段类型(text、keyword、date、long、double、boolean、ip、completion、geo_point……)
- 定义索引规则

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

被折叠的 条评论
为什么被折叠?



