一、ES基础概念
1.1 基础概念
索引:含有相同属性的文档集合 (索引只能包含英文字母且不能包含中划线)
类型:索引可以定义一个或多个类型,文档必须属于一个类型
文档:文档是可以被索引的基本数据单位
分片:每个索引都有多个分片,分个分片都是一个Lucene索引 (分担索引过大的磁盘的磁盘压力 和 搜索压力)
备份:拷贝一个分片就完成了分片的备份 (提高可用性 和 分担搜索压力)
系统默认是会创建5个分片,1份备份,分片是在创建索引的时候就定义好的不可修改,备份是可以在索引创建后修改的
1.2 ES API 风格
ES是以RESTFul API风格来定义自己的API风格的
- API基本格式: http://<ip>:<port>/<索引>/<类型>/<文档id>
- 常用HTTP动词: GET/PUT/POST/DELETE
二、ES基本用法
2.1 创建索引
- 创建索引需要提前设置好分片和副本数,类型名称和文档字段,创建语法如下
curl -XPUT -u elastic:LiJun123@ https://es-****.public.tencentelasticsearch.com:9200/person -H 'Content-Type: application/json' -d '
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
},
"mappings":{
"femal":{
"properties":{
"name":{
"type":"text"
},
"country":{
"type":"keyword"
},
"age":{
"type":"integer"
},
"date":{
"type":"date",
"format":"yyyy-MM-dd"
}
}
}
}
}
'

2.2 插入文档
2.2.1 指定文档id插入
- 指定id插入时需要手动填写id,使用PUT方法插入文档,插入语法如下
curl -XPUT -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1 -H 'Content-Type: application/json' -d'
{
"name":"kelly",
"age":24,
"country":"china",
"data":"1996-05-07"
}'

2.2.2 自动产生文档id插入
- 自动产生文档id插入不需要指定id,使用POST方法插入文档,插入语法如下:
curl -XPOST -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/ -H 'Content-Type: application/json' -d'
{
"name":"james",
"age":40,
"country":"america",
"data":"1977-03-07"
}'

2.3 修改文档
2.3.1 直接修改文档
- 通过文档id和 _update可以完成对指定id的文档修改,语法格式如下:
curl -XPOST -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1/_update -H 'Content-Type: application/json' -d'
{
"doc":{
"name":"我是kelly"
}
}
'

2.3.2 脚本方式修改文档
- 与直接修改不同的是,脚本修改可以支持多种脚本语言,也可以对数值进行运算,修改文档更灵活
curl -XPOST -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1/_update -H 'Content-Type: application/json' -d
'
{
"script":{
"lang":"painless",
# "inline":"ctx._source.age+=10",
"inline":"ctx._source.age=params.age",
"params":{
"age":27
}
}
}
'

2.4 删除数据
2.4.1 删除文档
curl -XDELETE -u username:password https://es-***.public.tencentelasticsearch.com:9200/people/man/1
2.4.2 删除索引
curl -XDELETE -u username:password https://es-***.public.tencentelasticsearch.com:9200/people
2.5 查询数据
2.5.1 简单查询
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1

2.5.2 条件查询
1.查询所有并显示指定条数
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
"query":{
"match_all": {}
},
"from":1,
"size":1
}
'
- postman查询people索引下指定条数数据截图

2.查询指定关键字并按关键字排序
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
"query":{
"match":{
"name":"kelly"
}
},
"sort":[
{
"data":{"order":"desc"}
}
]
}'

2.5.3 聚合查询
1.通过指定字段实现聚合查询
- 聚合查询通过aggs关键字来实现,通过terms指定字段进行聚合查询
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
"aggs":{
"group_by_age_count":{
"terms":{
"field":"age"
}
}
}
}'


2. 查询指定字段的最大最小值
- 获取指定字段的最大最小值可以通过调用 max,min来实现,如果需要统计指定字段可以调用stat
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
"aggs":{
"max_age_count":{
"max":{
"field":"age"
}
}
}
}
'


如果你完整的看到这里并动手实操一遍的话,你已经掌握了Elasticsearch的 增 删 改 查的所有操作,可以参考如下链接进行更详细的学习:https://www.imooc.com/learn/889 |