elasticsearch 7.x的 常用命令

序言

因为我最早是先学 sql,我相信很多人也和我一样
所以 我觉得用sql 的概念来重说es 概念会比较好
注意: mysql 的索引与es的索引不是同一个意思

准备

先安装好kibana 用kibana 学习 ES 脚本会比较容易

es在kibana中调试时,指令分两个部分
第一行是指令
第二行开始是指令的 json参数 (可省略)

常用指令

创建表

PUT 表名(要小写)

例子:
PUT zdy
或者

PUT zdy    
{    "settings": {    "number_of_shards": 1,    "number_of_replicas": 0    }    }

创建表结构

PUT /表名/_mapping

例子:

    PUT /zdy/_mapping
    {
        "properties": {
            "姓名": {
                "type": "text",
                "analyzer": "ik_max_word"
            },
            "住址": {
                "type": "keyword",
                "index": false
            },
            "性别": {
                "type": "text",
                "index": false
            },
            "年龄": {
                "type": "float"
            }
        }
    }

同时创建表和表结构

PUT /cars
{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 0
    },
    "mappings": {
        "properties": {
            "color": {
                "type": "keyword"
            },
            "make": {
                "type": "keyword"
            }
        }
    }
}

插入数据

PUT /表名/指定编号 或者 >PUT /表名(自动编号)

  POST zdy/_doc/1  
  { 
    "姓名":"zg",
    "年龄":9,
    "性别":"男",
    "住址":"江苏南通"
   }
###注意:字符串 不要用单引号
###或者
 POST /zdy/_doc
    {
        "名称":"超米手机",
        "图片":"http://image.leyou.com/12479122.jpg",
        "价格":3699.00,
        "是否卖出":true
    }

批量添加数据

POST 表/_bulk
###_bulk 是指令 不能改类似的还有_search ,_update 等
{action:{metadata}}\n 操作,
##action:可以是create(创建),index(保存),update(更新),delete(删除)等
##metadata :元数据,可以写数据的"_id"等
{request body}\n
##request body:写数据本身
{action:{metadata}}\n
{request body}\n

例子:

 POST /cars/_bulk
{ "index": {}}
{ "price" : 10000, "color" : "red", "make" : "honda", "sold" : "2014-10-28" }
{ "index": {}}
{ "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
{ "index": {}}
{ "price" : 30000, "color" : "green", "make" : "ford", "sold" : "2014-05-18" }
{ "index": {}}
{ "price" : 15000, "color" : "blue", "make" : "toyota", "sold" : "2014-07-02" }
{ "index": {}}
{ "price" : 12000, "color" : "green", "make" : "toyota", "sold" : "2014-08-19" }
{ "index": {}}
{ "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
{ "index": {}}
{ "price" : 80000, "color" : "red", "make" : "bmw", "sold" : "2014-01-01" }
{ "index": {}}
{ "price" : 25000, "color" : "blue", "make" : "ford", "sold" : "2014-02-12" }

修改数据

PUT /索引库/_doc/id值
POST /索引库/_doc/id值

PUT 与POST 更新操作区别
POST 主要是创建 ,而 PUT主要是修改
当POST 用于修改时 必须在URL带_update后缀,
更新前会比对新旧数据,如果新旧数据完全相同,将不会进行任何操作,不会影响序列号、版本号信息。 如果URI不带_update,不会检查原数据,都会显示updated
PUT路径没法带_update,每次都会更新显示updated

例子:

   PUT /zdy/_doc/1
    {
    "名称":"超大米手机",
    "图片":"http://image.leyou.com/12479122.jpg",
    "价格":3899.00,
    "库存": 100,
    "是否卖出":true
    }

删除数据

###删除记录
DELETE /索引名/_doc/id值
###删除表
DELETE /索引名

简单的条件查询

1. 查询所有

`GET /索引库名/_search`
{ "query": { "match_all": {} } }

使用match_all 可以查询到所有文档,是没有查询条件下的默认语句。


2. 匹配查询
GET /索引库名/_search
{
"query":{
    "match": {
    "category" : "Clothing"
    }
}
}

3. 精确分词匹配查询
GET /索引库名/_search
{
"query":{
    "match_phrase": {
    "category":"Women's Clothing"
    }
}
}
###先分词,按照 Women's 和 Clothing 两个单词进行检索,取并集

4. 相似度匹配 
GET /索引库名/_search{ 
"query": { 
"match": {  
"title": { 
"query": "小米手机电视",
"minimum_should_match": "60%" 
    }   
} 
}}

5. 多字段匹配
GET /索引库名/_search
{
"query": {
"multi_match": {
"query": "小米",
"fields":["title","subTitle"]
}
}

6.  多值匹配
GET /索引库名/_search
{
"query": {
    "terms": {
        "title": ["小米","手机"]
    }
}
}

7. 范围匹配
GET /索引库名/_search
{
"query": {
    "range": {
        "price": {
            "gte": 2799,
            "lte": 3899
        }
    }
}
}

8.模糊查询 类似 like
GET /索引库名/_search
{
    "query": {
        "fuzzy": {
            "title": {
                "value": "oope",
                "fuzziness": 2 
            }
        }
    }
}
##默认允许错误一个字母,最大为两个字母 正确标题 oppo

排序

GET /索引库名/_search
{  
"sort":[
    {
    "price":{
        "order":"desc"
    }
    }
]
}

分页

GET /ecommerce/product/_search
{      
"from":0, 
"size":2
}

##解析
"from":0 #从第几个数据开始
"size":2 #每页多少数据

选择要返回的字段数据

  1. 选择显示字段
 GET /ecommerce/product/_search
 {    
 "_source":["price","min_price","base_price"] 
 }
 #只显示三个字段
  1. 排除字段 images
 "_source": {
 "excludes": "{images}"
 }

##使用excludes 排除字段

复杂条件查询见下一篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值