elasticsearch常用操作命令

 

http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

https://www.cnblogs.com/zklidd/p/6114302.html

 

在操作时的区别如下:

POST /uri 创建
DELETE /uri/xxx 删除
PUT /uri/xxx 更新或创建
GET /uri/xxx 查看

POST不用加具体的id,它是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx)。

在ES中,如果不确定document的ID(documents具体含义见下),那么直接POST对应uri( “POST /website/blog” ),ES可以自己生成不会发生碰撞的UUID;

如果确定document的ID,比如 “PUT /website/blog/123”,那么执行创建或修改(修改时_version版本号提高1) 

ES与DB的层级关系类比

ES:indices --> types --> documents --> fields
DB:databases --> tables --> rows --> columns

ps:types以后会逐渐废除,不建议太关注

 

在幂等性的区别如下:

PUT、GET、DELETE是幂等的,由于同一条这样的指令,执行多次结果都一样。比如 PUT /uri/xxx 多次,那么结果和这条指令执行一次效果一样。

而POST是非幂等的,执行多次更改多次服务器状态。比如POST /uri 多次,那么生成多个UUID的document,执行多次效果当然和执行一次不一样了

 

 

启动之后,执行下面命令,运行正常,会有相应提示

curl localhost:9200

 

1、创建表(注意表名只能小写,大写创建失败)

curl -X PUT 'localhost:9200/horsetest'

2、查看所有表

curl -X GET 'localhost:9200/_cat/indices?v'

3、删除表

curl -X DELETE 'localhost:9200/horsetest'

4、检测集群是否健康

curl 'localhost:9200/_cat/health?v'

由于我的云内存空间较少,所有是yellow,如果是正常状态,应该为green

 

5、单条数据插入(POST、PUT)

curl -H "Content-Type:application/json" -X PUT 'localhost:9200/horsetest/abc/1' -d '
{
  "user": "小明",
  "title": "开发工程师",
  "desc": "开发淘宝京东"
}'

PUT必须使用id,不然失败,因为是新增。POST可以不用id

curl -H "Content-Type:application/json" -X POST 'localhost:9200/horsetest/abc' -d '
{
  "user": "小黑",
  "title": "测试工程师",
  "desc": "测试淘宝京东"
}'
如果POST使用id,则会对已经插入数据进行修改,更新相同字段值,其他数据不会变,新提交的字段如果不存在,则增加

两次操作后结果如下

curl -H "Content-Type:application/json" -X POST 'localhost:9200/horsetest/abc/1' -d '
{
  "user": "小黑post",
  "title": "测试工程师",
  "desc": "测试淘宝京东",
  "addStr": "psot新增"
}'

6、查询

curl 'localhost:9200/horsetest/abc/1?pretty=true'

 

7、删除

curl -X DELETE 'localhost:9200/horsetest/abc/2'

8、更新curl -H "Content-Type:application/json" -X PUT 'localhost:9200/horsetest/abc/2' -d '
{
  "user": "小明222333",
  "title": "开发工程师2222333",
  "desc": "开发淘宝京东22223333"
}'

对原有数据改变,发现id没变,version从1变为2,result从created变为updated

9、查询所有记录

curl 'localhost:9200/horsetest/_search'

types字段可以不写,但当后面有限制条件是,需要加上"Content-Type:application/json",size可以调整一次显示记录数,默认为10条

 

took:表示操作总耗时(单位毫秒)

time_out:表示是否超时

hits:表示命中的记录,hits内字段含义如下:

       total:返回总条数

       max_score:最高匹配度

       hits:返回的记录组成的数组

返回的每条记录里面都有_source字段,表示匹配程度,默认按照这个字段降序排列

 

10、全文检索

curl -H "Content-Type:application/json" 'localhost:9200/horsetest/abc/_search' -d '
{
  "query": {"match":{"desc":"开发"}}
}'

使用match查询,指定匹配条件为desc字段包含“开发”这个词,结果如下:

使用match查询,指定匹配条件为desc字段包含“开发”这个词

查询默认是一次返回10条记录,可以用size调整返回条数

curl -H "Content-Type:application/json" 'localhost:9200/horsetest/abc/_search' -d '
{
  "query": {"match":{"desc":"开发"}},
  "size":20
}'
 

from表示位移,下面代码表示从位置3开始,返回5条结果

curl -H "Content-Type:application/json" 'localhost:9200/horsetest/abc/_search' -d '
{
  "query": {"match":{"desc":"开发"}},
  "from":3
  "size":5
}'

11、逻辑运算

如果有多个搜索关键字,elastic认为他们是OR关系

下面“开发”、“工程师”都是关键字

curl -H "Content-Type:application/json" 'localhost:9200/horsetest/abc/_search' -d '
{
  "query": {"match":{"desc":"开发 工程师"}},
  "from":3,
  "size":5
}'

如果要执行多个关键字的and搜索,必须使用布尔查询

curl -H "Content-Type:application/json" 'localhost:9200/horsetest/abc/_search'  -d '
{
  "query":{
    "bool":{
      "must":[
        {"match":{"desc":"开发"}},
        {"match":{"desc":"京东"}}
      ]
    }
  }
}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值