ElasticSearch的API使用
文章目录
1.索引操作
ES中的索引
可以理解为MySQL中的数据库
1.1 创建索引
通过PUT
请求 ES 的 接口
格式:http://127.0.0.1:9200/shopping http://127.0.0.1:9200/{索引名称}
ES-head中可以看到新创建的索引 shopping2
1.2 获取索引信息
通过GET
请求 ES 的 接口
格式:http://127.0.0.1:9200/shopping http://127.0.0.1:9200/{索引名称}
1.3 获取所有索引信息
通过GET
请求 ES 的 接口
格式:http://127.0.0.1:9200/_cat/indices
1.4 删除索引
通过DELETE
请求 ES 的 接口
格式:http://127.0.0.1:9200/shopping http://127.0.0.1:9200/{索引名称}
此时去ES-head里面查看的时候,就已经看不到这个索引了。
1.5 建立索引映射
建立索引映射的过程 ,可以理解为SQL中的DML(建立表结构)
通过PUT
请求 ES 的 接口
格式:http://127.0.0.1:9200/{index}/_mapping
{
"properties":{
"name":{
"type":"text",
"index":true
},
"sex":{
"type":"keyword",
"index":true
},
"tel":{
"type":"keyword",
"index":false
}
}
}
2.文档操作
ES中的每条数据单位称为文档(doc) ,但其实就类似数据库中的数据。
2.1 新增文档(自动生成ID)
通过POST
请求 ES 的 接口
格式:http://127.0.0.1:9200/{index}/_doc http://127.0.0.1:9200/{索引名称}/_doc
{
"uuid":"mac book pro",
"price":16000
}
此时在ES-head上就可以看到新增的数据。
2.2 新增文档(指定ID)
通过POST
请求 ES 的 接口
格式:http://127.0.0.1:9200/{index}/_doc /{id}
此时在ES-head上就可以看到新增指定ID的数据。
2.3 修改文档(覆盖修改)
通过PUT
请求 ES 的 接口 (通过id整个覆盖)
格式:http://127.0.0.1:9200/{index}/_doc/{id}
ES-head查看结果
2.4 修改文档(部分修改)
通过PUT
请求 ES 的 接口 (通过id部分覆盖)
格式:http://127.0.0.1:9200/{index}/_update/{id}
ES-head查看结果
2.5 删除文档
通过DELETE
请求 ES 的 接口 (通过id和索引删除)
格式:http://127.0.0.1:9200/{index}/_doc/{id}
此时在ES-head中就可以看到此条数据被删除了
2.5 条件查询文档
2.5.1 查询文档下所有的文档
通过GET
请求 ES 的 接口
格式:http://127.0.0.1:9200/{index}/__doc/_search
2.5.2 根据id查询索引数据
通过GET
请求 ES 的 接口
格式:http://127.0.0.1:9200/{index}/_doc/{id}
2.5.3 分词匹配
通过GET
请求 ES 的 接口
(它会将所有包含搜索的分词内容的全部查出来)
格式:http://127.0.0.1:9200/{index}/_search
2.5.4 结果高亮显示
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
(它会将所有包含搜索的分词内容高亮显示)
2.5.5 完全匹配(不分词)
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
(它会把所有查询字段中包含搜索内容的文档查出来,连续不间断出现叫完全匹配)
2.5.6 匹配查询
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
2.5.7 match_all查询所有
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
2.5.7 分页条件查询
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
通过 from 与 size ,from是从第几条开始,size是多少条
2.5.8 对查询字段部分展示
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
通过 “__source”:[“uuid”] “__source”:[“字段1”,“字段2”,“字段3”]
2.5.9 按照字段进行排序
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
//通过 sort
"sort":{
"price":{
//字段名
"order":"desc" //正序还是倒序
}
}
2.6 多条件查询文档
2.6.1 多条件与
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
构建bool查询条件,must 为多条件与
//查询uuid包含iphone 同时 price为8799 的数据
{
"query": {
"bool": {
"must": [
{
"match": {
"uuid": "iphone"
}
},
{
"match": {
"price": "8799"
}
}
]
}
},
"from": 0,
"size": 2
}
2.6.2 多条件或
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
构建bool查询条件,should 为多条件与
//查询uuid包含mac 或者 price为16000 的数据
{
"query": {
"bool": {
"should": [
{
"match": {
"uuid": "mac"
}
},
{
"match": {
"price": "16000"
}
}
],
}
}
}
2.6.3 指定范围过滤
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
构建bool查询条件,filter关键字编写过滤条件
gt:大于 gte:大于等于 lt:小于 lte:小于等于
//过滤出价格大于等于16000 并且 价格小于18000 的数据
{
"query": {
"bool": {
"filter": {
"range": {
"price": {
"gte": 16000,
"lt": 18000
}
}
}
}
}
}
2.7 聚合查询
2.7.1 group分组查询
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
aggs为聚合操作关键字 , 如果这里不需要显示原数据,则添加 size:0 的条件
{
"aggs": {
//聚合操作
"price_group": {
//分组名称,随意起名
"terms": {
//分组
"field": "price" //分组字段
}
}
},
"size": 0 //不需要展示原始数据
}
它会根据price进行分组,并且默认就会count 出组内的数量
2.7.2 avg求平均
通过GET
请求 ES 的 接口 http://127.0.0.1:9200/{index}/_search
aggs为聚合操作关键字 , 如果这里不需要显示原数据,则添加 size:0 的条件
{
"aggs": {
//聚合操作
"price_avg": {
//分组名称,随意起名
"avg": {
//求平均
"field": "price" //分组字段
}
}
},
"size": 0 //不需要展示原始数据
}
//结果
"aggregations": {
"price_avg": {
"value": 7999.375
}
}
它会根据price进行求平均