ElasticSearch(三)API使用

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进行求平均

猜你喜欢

转载自blog.csdn.net/qq_27331467/article/details/125843973