Elasticsearch 实战

1、document数据格式

 

面向文档的搜索分析引擎

 

1)应用系统的数据结构都是面向对象的,复杂的。

 

 

2)对象存储在数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式,相当麻烦。

 

3)ES是面向文档的,文档中存储的数据结构与面向对象的数据结构是一致的,基于这种文档的数据结构,ES可以提供复杂的索引,全文索引,分析聚合等功能。

 

4)ES的document是用json数据格式表达的。


 

public class Employee{

    private String email;

    private String firstName;

        private String lastName;

        private EmployeeInfo info;

        private Date joinDate;



}

public class EmployeeInfo{

    private String bio;//性格

    private Integer age;//年龄

    private String[] interests;//兴趣

}

 

在数据库中两张表,employee表和empolyeeInfo表。

 


 

{

"email":"zhangsan@dingtalk.com",

"first_name":"san",

"last_name":"zhang",

"info":{

"bio":"curious and modest"

"age":"20",

"interests":["bike","climb"]

},

"join_date":"2018/10/06"

}

这时候我们就明白了document数据格式了。

 

2、电商网站商品管理案例背景介绍

 

有一个电商网站,需要为其基于ES构建一个后台系统提供如下功能:

 

1)对商品信息进行CRUD(增删改查)操作。

 

2)执行简单的结构化查询。

 

3)可以执行简单的全文检索。以及复杂的短句检索。

 

4)对于全文检索的结果进行高亮显示。

 

5)对数据进行简单的聚合分析。

 

3、简单的集群管理

 

1)快速检查集群的健康情况

 

GET /_cat/health?v

 

 

如何快速了解集群的监控状态?

 

(green、yellow、red)

 

green:每个索引的primary shard 和 replica shard 都是active状态。

 

yellow:每个索引的primary shard 都是active状态,但是部分replica shard不是active状态,处于不可用状态 。

 

red:不是所有索引的primary shard 都是active状态,部分索引数据丢失。

 

 

 

2)快速查看集群中有哪些索引

 

GET /_cat/indices?v

 

3)简单的索引操作

 

创建索引:PUT /test_index?pretty

 

 

效果

 

删除索引:DELETE /test_index?pretty 

 

 

效果

 

 

4、商品的CURD(增删改查)操作

 

1)新增商品,新增文档,建立索引

 

PUT /index/type/id

{

"json数据"

}

 

实例

 

 

创建三条数据


 

PUT /ecommerce/product/1

{

  "name":"gaolujieyagao",

  "desc":"gaoxiaomeibai",

  "price":"30",

  "producer":"gaolujie producer",

  "tags":["meibai","fangzhu"]

}

PUT /ecommerce/product/2

{

  "name":"jiajieshiyagao",

  "desc":"yaoxiaofangzhu",

  "price":"25",

  "producer":"jiajieshi producer",

  "tags":["fangzhu"]

}

PUT /ecommerce/product/3

{

  "name":"zhonghuayagao",

  "desc":"caobenzhiwu",

  "price":"40",

  "producer":"zhonghua producer",

  "tags":["qingxiang"]

}

 

ES会自动建立index和type,不需要提前创建,而且ES默认会对document每个filed都建立倒排索引,让其可以被搜索。

 

2)查询商品:检索文档

 

Get /ecommerce/product/1

 

效果

 

 

3.1)修改商品:替换文档


 

PUT /ecommerce/product/1

{

  "name":"jiaqiangban gaolujieyagao",

  "desc":"gaoxiaomeibai",

  "price":"30",

  "producer":"gaolujie producer",

  "tags":["meibai","fangzhu"]

}

效果

 

有不足之处,得全部属性重写。

 

3.2)修改商品:更新文档

POST /ecommerce/product/1/_update

{

"doc":{

"name":"zengqingban gaolujieyagao"

}

}

 

效果

 

 

4)删除商品:删除文档

 

DELETE /ecommerce/product/1

 

效果

 

 

删除成功

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值