ElasticSearch入门
总阅读次
ElasticSearch入门
对ElasticSearch有一个基本的认识和使用
基础概念
- 集群和节点
一个集群包含多个节点,节点通过集群名称加入节点。就和我们安装es集群的时候,每一个节点都需要配置cluster.name
属性。 索引
含有相同属性文档的集合,索引格式:小写不能有中画线类型
索引可以定义一个或多个类型,文档必须属于一个类型文档
文档是可以被索引的基本单位
上面的概念可以类比于,索引就是database数据库,类型就是table表,文档就是record一行记录
- 分片
每个索引都有多个分片,每个分片是Lucene索引。分片的好处,当一个索引的数据两很大时,通过分片,可以缓解磁盘的压力 - 备份
拷贝一份分片就完成了分片的备份。备份的好处,提高可用性
es默认创建5个分片一份备份,分片的数量只能在创建索引的时候修改,备份的数量可以后期修改。
ElasticSearch基本用法
ES的API都是基于RESTFul API 风格命名,API基本格式:
http://<ip>:<port>/<索引>/<类型>/<文档id>
常用的HTTP动词:
GET/PUT/POST/DELETE
索引创建
通过head插件创建索引,具体如
使用JSON的形式创建
使用Postman工具,具体如下
通过PUT方式请求
http://192.168.137.3:9200/people
接口
输入以下信息:
|
|
插入
指定文档id插入
使用Post man工具使用PUT请求url:http://192.168.137.3:9200/people/man/1
,URL详解如下:
请求body如下,和我们创建的类型字段一致:
|
|
成功响应结果如下:
通过elasticsearch-head工具也能看到插入数据成功:
刷新页面docs变为1表示插入一条文档成功,或者进入数据浏览tab也能看到刚才添加的数据,如下图:
自动产生id插入
同样使用Post man插入,通过POST请求方式请求http://192.168.137.3:9200/people/man/
这里无需指定文档id了
响应结果如下:
通过elastic-head工具查看,刷新页面
通过上面结果可以看出id是自动生成的
修改
分为如下两种方式:
直接修改文档
通过Post man请求相应的URL进行修改,通过POST方式请求http://192.168.137.3:9200/people/man/1/_update
请求方式如下:
响应结果如下:
es-head结果:
修改成功
通过脚本修改文档
同样使用Post man工具进行修改,请求url和方式不变http://192.168.137.3:9200/people/man/1/_update
,请求方式如下:
解释一下请求json:
|
|
还可以通过以下方式修改:
响应结果如下:
es-head响应结果:
删除
分为如下两种方式
删除文档
使用Post man工具使用DELETE方式请求urlhttp://192.168.137.3:9200/people/man/1
,如下:
es-head结果:
刚才的id为1的结果已经不存在
删除索引
通过es-head删除
进入es-head页面,点击“概述”tab页,我们选择
people
索引进行删除,如下点击确认按钮,将会删除该索引和该索引下的所有数据
刷新es-head该索引消失
通过API的方式删除
进入Post man工具,通过DELETE方式请求
http://192.168.137.3:9200/book
URL,如下:
刷新es-head该索引消失
查询
录入以下数据
简单查询
通过API的方式查询,进入Postman工具通过POST方式请求http://192.168.137.3:9200/book/novel/1
,结果如下:
条件查询
查询所有结果
使用Postman工具通过POST方式请求
http://192.168.137.3:9200/book/_search
,输入以下查询条件:12345{"query":{"match_all": {}}}响应结果如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152{"took": 9,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 11,"max_score": 1,"hits": [{"_index": "book","_type": "novel","_id": "5","_score": 1,"_source": {"word_count": 5000,"author": "王五","title": "菜谱","publish_date": "2002-10-01"}},{"_index": "book","_type": "novel","_id": "8","_score": 1,"_source": {"word_count": 3000,"author": "瓦力","title": "ElasticSearch入门","publish_date": "2017-08-25"}},{"_index": "book","_type": "novel","_id": "9","_score": 1,"_source": {"word_count": 3000,"author": "很胖的瓦力","title": "ElasticSearch精通","publish_date": "2017-08-15"}}}]}}took表示查询所花的时间
hits表示查询的结果,默认显示10条记录,这里为了显示,删除了一些结果
分页查询
URL不变,请求方式不变,修改请求参数如下:
1234567{"query":{"match_all": {}},"from" : 1,"size" : 1}from表示开始位置
size表示显示条数
关键字查询
URL不变,请求方式不变,修改请求参数如下:
查询title包含
ElasticSearch
1234567{"query":{"match": {"title":"ElasticSearch"}}}结果默认按照
_score
倒序排列修改排序规则
123456789101112{"query":{"match": {"title":"ElasticSearch"}},"sort" :[{"publish_date":{"order":"desc"}}]}
聚合查询
请求的URL和请求方式和上面一样,具体如下:
|
|
通过字段word_count
进行分组,具体结果如下,下面是部分结果
|
|