因此就有了ElasticSearch这样一个分布式可扩展的实时搜索和分析引擎。
ES是面向文档型数据库,一条数据在这里就是一个文档。
ES与关系型数据库MySQL的对比:
注:ES在后续版本中Type的概念已经逐渐被弱化了。
id content
1001 my name is zhangsan
1002 my name is lisi
适合通过索引查询整个数据行,不适合对数据的位置进行模糊查询。
keyword id
name 1001, 1002
zhangsan 1001
lisi 1002
倒排索引即将数据进行分词,形成词条和id的对应关系,即反向索引。因此它适合通过关键字索引来查询数据项所在的位置。
ES中的索引就相当于关系型数据库(例如MySQL)中的数据库。
对比关系型数据库,创建索引就等同于创建数据库。
在Postman中,向ES服务器发送PUT请求:http://127.0.0.1:9200/shopping
响应如下,创建shopping索引成功:
向ES服务器发送GET请求:http://127.0.0.1:9200/shopping,即可获得对应索引的相关信息。
向ES服务器发送GET请求:http://127.0.0.1:9200/_cat/indices?v,即可获得对应索引的相关信息,结果如下:
向ES服务器发送DELETE请求:http://127.0.0.1:9200/shopping,即可删除对应索引,响应如下:
索引已经创建,接下来需要创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为JSON格式。
向ES服务器发送POST请求:http://127.0.0.1:9200/shopping/_doc,请求体中填入数据的JSON格式信息。
多次请求则会多次重复创建,返回的随机id都不相同。
我们可以自定义生成数据的id,只需要在请求后面加上 /自定义id ,例如:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1002,响应如下:
多次请求同一id即为修改操作(全量修改),不会重复创建。
向ES服务器发送请求:http://127.0.0.1:9200/shopping/_create/shopping_phone_1005,多次请求会报错,即使用_create只能创建一次。
根据id主键查询数据,例如向ES服务器发送GET请求:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1001,可以得到相应的数据。
如果输入的id没有找到对应的数据,返回如下:
查询指定索引下的所有文档,发送GET请求:http://127.0.0.1:9200/shopping/_search,返回结果如下:
与创建文档请求方式一致,即向ES服务器发送PUT/POST请求:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1001,请求体中输入修改的数据即可完成此文档的全量更新。
全量修改不太常用,常用的是局部修改的操作,即对文档的局部信息进行更新。
向ES服务器发送POST请求:http://127.0.0.1:9200/shopping/_update/shopping_phone_1001,请求体中的 doc 字段值带上要修改的局部数据即可。
向ES服务器发送DELETE请求:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1002,即可删除id主键对应的文档数据。