Elasticsearch 实战之三:ES 基本操作

这篇具有很好参考价值的文章主要介绍了Elasticsearch 实战之三:ES 基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

0. 数据格式说明

1. ES的基本操作

1.1 索引操作

1.1.1 建立索引

1.1.2  删除索引

1.1.3  查询索引

1.2 映射操作

1.2.1 建立映射

1.2.2 查询映射

1.3 基本操作-CRUD

1.3.1 新增和替换文档

1.3.2 查询文档


0. 数据格式说明

在实战开始之前,为了便于书写和沟通,本文先来约定一下如何在文章中表达请求和响应的信息:

1. 假设通过Postman工具或者Kibana向服务器发送一个PUT类型的请求,地址是:http://{IP}:9200/test001/article/1

2. 请求的内容是JSON格式的,内容如下:

{ 
  "settings": {
    "number_of_shards": 5	//设置5个片区
    , "number_of_replicas": 1	//设置1个备份
  }
}

对于上面的请求,本文中就以如下格式描述:

PUT /user

{ 
  "settings": {
    "number_of_shards": 5	//设置5个片区
    , "number_of_replicas": 1	//设置1个备份
  }
}

1. ES的基本操作

1.1 索引操作

1.1.1 建立索引

语法:PUT /索引名

# 发送请求
# 在没有特殊设置的情况下,默认有5个分片,1个备份,也可以通过请求参数的方式来指定.。
PUT test_index
{}

# 返回值

#! Deprecation: the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test_index"
}

结果返回创建成果,同时kinbana显示警告,从ES7开始默认的分片数将从5修改为1,如果需要继续指定分片数,则需要采用index参数模板传入参数。

es 基本操作,ElasticSearch,elasticsearch,java,大数据

1.1.2  删除索引

语法:DELETE /索引名

# 发送请求
DELETE test_03
{}

# 返回值
{
  "acknowledged" : true
}

 删除成功: 

es 基本操作,ElasticSearch,elasticsearch,java,大数据

1.1.3  查询索引

语法:GET /索引名

# 发送请求
GET test_index

# 返回值
{
  "test_index" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1664806581608",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "qcVTOE2VRpieJi3sZOjZwg",
        "version" : {
          "created" : "6050499"
        },
        "provided_name" : "test_index"
      }
    }
  }
}

查询结果中包括了别名(aliases)、映射(mappings)以及配置参数(mappings)等详细信息。

es 基本操作,ElasticSearch,elasticsearch,java,大数据

1.2 映射操作

1.2.1 建立映射

语法:POST/索引/映射

# 发送请求
POST /test_index/student
{ 
  "mappings": { 
  "info": { 
    "properties": { 
      "name": { 
        "type": "text"
        },
        "clazz":{
          "type":"string"
        },
        "id":{
          "type":"double"
        }
      } 
    } 
  } 
}

# 返回值
{
  "_index" : "test_index",
  "_type" : "student",
  "_id" : "bB1InoMBWJmEB7k-HcSI",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

字段类型 type:double / long / integer / text / keyword / date / binary

注意:text和keyword都是字符串类型,但是只有text类型的数据才能分词,字段的配置一旦确定就不能更改 映射的配置项有很多,我们可以根据需要只配置用得上的属性.

创建成果,返回值中除了执行结果(result)之外,还有当前映射的详细信息。 

es 基本操作,ElasticSearch,elasticsearch,java,大数据

1.2.2 查询映射

语法:GET /索引名/_mapping

# 发送请求
GET /test_index/_mapping

#返回值
{
  "test_index" : {
    "mappings" : {
      "student" : {
        "properties" : {
          "mappings" : {
            "properties" : {
              "info" : {
                "properties" : {
                  "properties" : {
                    "properties" : {
                      "clazz" : {
                        "properties" : {
                          "type" : {
                            "type" : "text",
                            "fields" : {
                              "keyword" : {
                                "type" : "keyword",
                                "ignore_above" : 256
                              }
                            }
                          }
                        }
                      },
                      "id" : {
                        "properties" : {
                          "type" : {
                            "type" : "text",
                            "fields" : {
                              "keyword" : {
                                "type" : "keyword",
                                "ignore_above" : 256
                              }
                            }
                          }
                        }
                      },
                      "name" : {
                        "properties" : {
                          "type" : {
                            "type" : "text",
                            "fields" : {
                              "keyword" : {
                                "type" : "keyword",
                                "ignore_above" : 256
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

返回值包括type和field详细的JSON信息。

es 基本操作,ElasticSearch,elasticsearch,java,大数据

1.3 基本操作-CRUD

1.3.1 新增和替换文档

语法:PUT /索引名/类型名/文档ID

# 发送请求
PUT /test_index/student/1
{
  "id":1,
  "name":"战三",
  "clazz":12
}

# 返回值
{
  "_index" : "test_index",
  "_type" : "student",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

注意:

  • 新增和替换文档时需要使用标准的JSON格式,不能使用简版的JSON 格式。
  • POST 操作也可以对文档进行新增和删除操作。他们的唯一区别就在于PUT 请求是硬着陆,会把文档中的属性全部强制更新(如:_id、_version等)。POST 请求 和 DEPETE 不会重置_verison,只会在其基础上+1。
  • 一般推荐使用的是PUT 进行文档的更新和替换,POST 用的比较少。POST操作可以不指明文档的ID,但是我们存在ES中的数据一般都是转存过来的,不会自动生成,故不推荐使用POST。
  • 当索引/类型/映射不存在时,会使用默认设置自动添加。 ES中的数据一般是从别的数据库导入的,所以文档的ID会沿用原数据库中的ID 索引库中没有该ID对应的文档时则新增,拥有该ID对应的文档时则替换。

1.3.2 查询文档

语法:1. 查询所有(基本查询语句): GET /索引名/类型名/_search

# 发送请求
GET /test_index/student/_search

# 返回值
{
  "took" : 151,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 2,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "test_index",
        "_type" : "student",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "id" : 1,
          "name" : "战三",
          "clazz" : 12
        }
      },
      {
        "_index" : "test_index",
        "_type" : "student",
        "_id" : "bB1InoMBWJmEB7k-HcSI",
        "_score" : 1.0,
        "_source" : {
          "mappings" : {
            "info" : {
              "properties" : {
                "name" : {
                  "type" : "text"
                },
                "clazz" : {
                  "type" : "string"
                },
                "id" : {
                  "type" : "double"
                }
              }
            }
          }
        }
      }
    ]
  }
}

es 基本操作,ElasticSearch,elasticsearch,java,大数据

 查询所有结果中包含以下字段:

  • took:耗时
  • _shards.total:分片总数
  • hits.total:查询到的数量
  • hits.max_score:最大匹配度
  • hits.hits:查询到的结果
  • hits.hits._score:匹配度

语法:2. 根据ID查询: GET /索引名/类型名/文档ID

# 发送请求
GET /test_index/student/1


# 返回值
{
  "_index" : "test_index",
  "_type" : "student",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "id" : 1,
    "name" : "战三",
    "clazz" : 12
  }
}

es 基本操作,ElasticSearch,elasticsearch,java,大数据文章来源地址https://www.toymoban.com/news/detail-672908.html

到了这里,关于Elasticsearch 实战之三:ES 基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令

    一、es的基本原理与基础概念 1.1 倒排索引 倒排索引 源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带

    2024年02月12日
    浏览(35)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(56)
  • 【ES】---ES的基本操作

    ES有4种客户端,分别是:Jest client、Rest client、Transport client、Node client。 ES支持两种协议 HTTP协议,支持的客户端有Jest client和Rest client Native Elasticsearch binary协议,也就是Transport client【7.0弃用】和Node client【2.3弃用】 Jest client非官方支持,在ES5.0之前官方提供的客户端只有Trans

    2024年02月08日
    浏览(26)
  • java 操作es 的基本操作

    创建索引 创建索引别名 索引的相关设置 查询索引数据 bulk 导入数据 持续更新中~ pom的坐标

    2024年01月20日
    浏览(33)
  • es基本操作使用

    es映射关系(对应数据库) ———————————————— 1.创建索引 创建索引时指定属性名,即映射关系 2.修改索引 3.删除索引 eg:delete /test/type1/1,表示删除test索引库中类型(表)为type1中id属性为1的document(记录)。 4.查询索引 表示查询某一个属性名为name的值为张

    2024年02月15日
    浏览(23)
  • 一些es的基本操作

    用postMan: 给名为population_portrait_hash_seven的索引增加了一个text类型的字段。 用chrome插件Elasticvue 的Rest接口,本质上应该也是发HTTP請求: 给这个接口增加了一个keyword类型的字段。 好像直接删除是不支持的。要建个新索引,再使用 Reindex API 将数据从旧索引复制到新索引,排除不

    2024年01月25日
    浏览(33)
  • ES基本操作(postman篇)

    关系型数据库 - Databases(库) - Tables(表) - Rows(行) - Columns(列)。 Elasticsearch - Indeces(索引) - Types(类型) - Documents(文档) - Fields(属性)。 需要注意的是:type的概念在es7.0之后已经删除了。  以下仅做刚入门学习使用,工作中基本不会使用这个方式 创建Index 其中shopping是Index的名称,注

    2024年02月12日
    浏览(31)
  • ES基本操作(JavaAPI篇)

    引入jar包依赖 对于其他的查询,需要修改 “QueryBuilders.matchAllQuery()” 注意:中文自动分词,可模糊搜索。如:

    2024年02月16日
    浏览(27)
  • Es的索引操作(代码中的基本操作)

    // 1.创建客户端对象 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost(\\\"localhost\\\", 9200, \\\"http\\\")) ); (1)创建索引 // 创建索引 - 请求对象 CreateIndexRequest request = new CreateIndexRequest(\\\"user\\\"); // 发送请求,获取响应 CreateIndexResponse response = client.indices().create(request, RequestOp

    2024年02月13日
    浏览(29)
  • ES基本查询语法_Kibana操作(持续更新)

    1. ES查询索引下所有的数据 2. ES单字段精确查询 3. ES多字段精确查询(默认Kibana查询最多展示10条记录,可以通过设置size来展示更多匹配到的数据) 4. ES数组字段精确查询 5. ES日期范围查询(大写HH表示24小时制) 6. 查询ES索引下的数据量 7. 查询ES索引下的mapping关系 7. 查询E

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包