Elastic Search 的基本 使用

崧峻
原创
发布时间: 2025-06-21 14:33:04 | 阅读数 0收藏数 0评论数 0
封面
Elaticsearch是一个开源的==高扩展的分布式全文检索引擎==,它可以近乎实时的检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES使用Java开发。Lucene作为其核心来实现所有索引和搜索的功能,它的目的是通过简单的RESTful API来隐藏Lucene的复杂性。
1

索引操作

添加索引

输入如下地址 如图1所示 put请求 后面的test是索引名

http://127.0.0.1:9200/test


这是他的返回结果

{
"acknowledged": true, // 表示是否创建成功
"shards_acknowledged": true, // 表示在超时之前,对于索引中的每份切片,是否已经启动了必要数量的切片副本。
"index": "test" // 索引名
}


查看指定的索引信息

输入如下地址 如图2所示 get请求 后面的test是索引名

http://127.0.0.1:9200/test


返回结果如下

{
    // 索引名
"test": {
        // 用于存储别名相关的配置信息。在此结果中,别名未定义。
"aliases": {},
        // 这是一个空对象,用于存储索引的映射信息,包括字段的数据类型、分词器等。在此结果中,映射未定义。
"mappings": {},
        // 索引的配置信息,包含了索引级别的各种配置项
"settings": {
            // 索引级别的设置信息
"index": {
                // 路由策略的配置信息
"routing": {
                    // 数据分片分配的配置信息
"allocation": {
                        // 包含数据分片分配相关配置的对象
"include": {
                            // 控制数据分配偏好的配置项,指定了数据分配的偏好策略为"data_content"
"_tier_preference": "data_content"
}
}
},
                // 索引库分片数 当前索引的分片数为1
"number_of_shards": "1",
                // 索引库名称
"provided_name": "test",
                // 创建时间 时间戳
"creation_date": "1734059722929",
                // 索引库副本数
"number_of_replicas": "1",
                // 唯一标识 索引的id
"uuid": "ZTkybyCLR1m8XkrOUvsJGA",
                // 版本号
"version": {
                    // // 索引的创建版本号
"created": "7172599"
}
}
}
}
}


查看所有索引信息

输入如下地址 如图3所示 get请求

http://127.0.0.1:9200/_cat/indices?v


删除索引信息

输入如下地址 如图4所示 delete请求 后面的test是索引的名称

http://127.0.0.1:9200/test


2

文档创建

指定id创建文档数据

如图1所示 输入以下地址 后面的1是索引名称 用put请求

http://127.0.0.1:9200/test/_doc/1


不指定id创建文档数据

如图2所示输入以下网址 用post请求

http://127.0.0.1:9200/test/_doc


返回结果

{
    // 索引的名称
"_index": "test",
    // 代表是文档类型
"_type": "_doc",
    // id 如果指定了就是指定的id 没指定就是自动生成的
"_id": "3fbPvpMBHnIVK4n29uTz",    
    // 版本号,每一次对文档进行修改都会增加版本号
"_version": 1,
    // 结果 这里的 created 表示创建成功
"result": "created",
    // 分片信息
"_shards": {
        // 总数2
"total": 2,
        // 分片成功1
"successful": 1,
        // 分片失败0
"failed": 0
},
    // 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 1,
    // _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1
}


3

基本查询文档数据信息

根据id查询文档输入

输入以下网址 设置为get请求 后面的1代表id号 如图1所示

    http://127.0.0.1:9200/test/_doc/1

返回值 :

    {
    // 索引库名称
"_index": "test",
    // 类型 代表文档类型
"_type": "_doc",
    // 主键id
"_id": "1",
    // 版本号
"_version": 1,
    // 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 0,
    // _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1,
    // 是否存在
"found": true,
    // 查询出来的数据 源文档信息
"_source": {
"name": "张三",
"age": 18,
"address": "北京省,北京市,海淀区,无名小区,测试21-2"
}
}



查询某个索引下面全部的文档数据

输入以下网址 get请求 如图2所示

http://127.0.0.1:9200/test/_doc/_search


返回结果

{
    // 请求花费了多长时间
"took": 3,
    // 是否超时
"timed_out": false,
    // 执行请求时查询的分片信息
"_shards": {
        // 总片数
"total": 1,
        // 成功返回结果的分片数量
"successful": 1,
        // 没有搜索/跳过的分片数量
"skipped": 0,
        // 失败的分片数量
"failed": 0
},
    // 搜索命中结果
"hits": {
        // 总条数
"total": {
"value": 2,
"relation": "eq"
},
        // 计算所得的最高分
"max_score": 1.0,
        // 结果数据集合
"hits": [
{
                // 索引名称
"_index": "test",
                // 文档类型
"_type": "_doc",
                // id
"_id": "1",
                // 匹配分数
"_score": 1.0,
                // 内容
"_source": {
"name": "张三",
"age": 18,
"address": "北京省,北京市,海淀区,无名小区,测试21-2"
}
},
{
"_index": "test",
"_type": "_doc",
"_id": "3fbPvpMBHnIVK4n29uTz",
"_score": 1.0,
"_source": {
"name": "王九",
"age": 34,
"address": "北京省,北京市,海淀区,无名小区,测试21-2"
}
}
]
}
}


4

修改文档数据

根据id全量修改文档数据

如图1所示 输入以下网址 设置为put 请求 ,json 设置为要修改的数据 后面的1是id

http://127.0.0.1:9200/test/_doc/1


根据id局部修改文档数据

如图2所示 输入以下网址 设置为put 请求 ,json 设置为要修改的数据 后面的1是id

http://127.0.0.1:9200/test/_update/1


返回值解释:


{
    // 索引名称
"_index": "test",
    // 文档类型
"_type": "_doc",
    // id
"_id": "1",
    // 版本号
"_version": 3,
    // 代表是修改
"result": "updated",
    // 执行请求时查询的分片信息
"_shards": {
        // 分片数
"total": 2,
        // 成功数1
"successful": 1,
        // 失败0
"failed": 0
},
    // 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 3,
    // _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1
}


5

删除文档数据

如图所示输入以下网址 设置为delete请求

http://127.0.0.1:9200/test/_doc/1


返回结果

{
    // 索引名称
"_index": "test",
    // 文档类型
"_type": "_doc",
    // id号
"_id": "1",
    // 版本号
"_version": 4,
    // deleted,数据被删除。如果删除不存在的问题,result:not_found
"result": "deleted",
    // 执行请求时查询的分片信息
"_shards": {
        // 分片数
"total": 2,
        // 成功数1
"successful": 1,
        // 失败0
"failed": 0
},
    // 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 4,
    // _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1
}


6

条件查询文档数据

设置为get 请求 输入以下网址 和json json内容大家自行参考 如图1所示 下面也给大家列举出来了几个常用的json


网址:

http://127.0.0.1:9200/test/_doc/_search


json:匹配搜索

{
// 查询
"query":{
// 匹配查询
"match":{
// 匹配的字段以及内容
"address":"朝阳测试"
}
}
}


分页&排序&指定字段查询

{
// 查询
"query":{
// 全量查询 代表查询全部
"match_all":{
}
},
// 当前页数据的起始位置 --第一条的位置
"from": 0,
// 每页查询多少个
"size":20,
// 查询哪些字段
"_source":["name","age"],
// 排序操作
"sort":{
// 哪个字段进行排序
"age":{
// asc升序 desc降序
"order":"desc"
}
}
}


完全匹配 和 高亮查询

{
// 查询参数
"query":{
// 代表完全匹配 不说分词匹配
"match_phrase":{
"name":"张三"
}
},
// 高亮查询
"highlight":{
"fields":{
// 高亮的字段
"name":{
}
}
}

}


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载