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":"[email protected]",

"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

效果

删除成功

猜你喜欢

转载自blog.csdn.net/young_1004/article/details/83049412