在之前的文章,我搭建了一个分布式的ElasticSearch环境,版本是2.2.4的。最近开始学习了ES,因为选择的版本有点低,以下的所有笔记都是基于ES2.2.4撰写。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。简单的认识之后,直接进入主题。
一、创建索引
1、创建索引可以在head插件中新建索引,也可以通过postman使用语句创建,创建的时候,索引名是小写的英文名,而且不能使用下划线。索引分为两种,一种是非结构化索引,一种是结构化索引,在ES,mappings就是判断索引是结构化还是非结构化索引的标识,如果mappings的内容是空的,则这个索引就是非结构化索引,反之,该索引就是结构化索引。
以下是在postman中创建索引代码:
二、插入数据
1、插入分为两种,一种是指定文档ID插入,另外一种是自动产生文档ID插入。在postman工具中使用PUT向ES中插入数据。
2、指定文档ID插入
在head插件可以看到mybook的docs的值已经不是0,点击数据浏览,选择mybook索引可以查看刚刚添加的内容,如下图:
3、自动产生文档ID插入
自动产生文档ID插入和指定文档插入区别就在于在URL中不指定id的值,ES会自动创建一串字符串作为ID,而且,指定文档插入使用的是PUT请求,而自动产生ID插入只能使用POST插入。以下是主要代码:
三、修改文档数据
修改有两种,一是直接修改文档,另外一种是脚本修改文档,请求的URL是:http://<ip>:<port>/<index>/<id>/_update,并且使用POST请求。
1、指定文档ID方式修改
四、删除
删除操作比较简单,在postman中使用DELETE请求,在URL中指定需要删除的是哪一个索引的哪一个类型下的哪一个id的内容即可,下面我删除id为1的数据:
五、查找
ES的查询分为简单查询、条件查询、聚合查询
1、简单查询
简单查询使用GET请求即可。
2、条件查询
3、聚合查询
聚合查询使用aggs关键词,以下是我对价格字段的聚合:
{
"aggs":{--使用aggs关键词
"my_price":{--这个名词随便起
"terms":{--使用terms关键词
"field":"price"--聚合字段
}
}
}
}
结果返回是:
上面使用的是单个聚合,也可以多个聚合哦!看代码:
{
"aggs":{
"my_price":{
"terms":{
"field":"price"
}
},
"theauthor":{
"terms":{
"field":"author"
}
}
}
}
结果是:
学习了ES后,做一次笔记,感觉印象深刻多了。