一起学Elasticsearch系列-索引的CRUD

这篇具有很好参考价值的文章主要介绍了一起学Elasticsearch系列-索引的CRUD。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文已收录至Github,推荐阅读 👉 Java随想录
微信公众号:Java随想录


本篇主要是介绍Elasticsearch中索引的基本操作API,即增删改查(CRUD)。

创建索引

PUT /my_index?pretty

?pretty是一个可选参数,如果加上,Elasticsearch 将返回格式化(即缩进、换行等使结果更易读)过的 JSON。

输出示例:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "my_index"
}

这个输出表示索引已成功创建。"acknowledged": true 表示请求已被接受,"shards_acknowledged": true 表示所有的分片都已经准备就绪,"index": "my_index" 是你刚才创建的索引名称。

删除索引

DELETE /my_index?pretty

假设 my_index 索引存在并已成功删除,则输出如下:

{
  "acknowledged" : true
}

这个响应表示Elasticsearch已确认删除请求。

注意:该操作是不可逆的,一旦删除,所有存储在索引中的数据都将被永久移除,因此在执行此操作时务必谨慎

查询数据

请求:

GET /my_index/_search
{
  "query": {
    "match": {
      "field_name": "my_value"
    }
  }
}

在此示例中,我们在名为 my_index 的索引上进行搜索,查找字段 field_name 中值为 my_value 的文档。

响应:
Elasticsearch返回的响应包括一系列关于查询的信息,例如查询所花费的时间、是否超时、命中的文档数等。同时,返回的结果也会包括所有匹配的文档。

{
  "took": 30,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1.0,
    "hits": [
      {
        "_index": "my_index",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.0,
        "_source": {
          "field_name": "my_value"
        }
      }
    ]
  }
}

请注意,以上只是基本的示例,实际ES查询可能会复杂得多,包含过滤、聚合、排序等多种操作。

获取所有索引数据的信息

GET _cat/indices?v

示例输出:

health status index                    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_task_manager_1   C9SW_Y7cQ8-TJQGArKRcDA   1   0          2            0     31.8kb         31.8kb
yellow open   my_index                 7V75Rtf1QBCslQvWWPOS2A   1   1          0            0       283b           283b
green  open   .apm-agent-configuration en6N1awvRZSLySqh0yjleA   1   0          0            0       283b           283b
green  open   .kibana_1                9-gHntOQTCeM8RqViBAaog   1   0          8            1     19.1kb         19.1kb

返回的结果会包含以下列:

  • health:索引的健康状态。它可以是"green"(一切正常),“yellow”(至少所有主分片都是可用的,但不是所有副本分片都可用)或者"red"(有主分片无法使用)。
  • status:索引的状态。通常情况下,可能的值是"open"或"close"。
  • index:索引的名称。
  • uuid:代表索引的唯一标识符。
  • pri:主分片的数量。
  • rep:每个主分片的副本数。
  • docs.count:存储在索引中的文档数量。
  • docs.deleted:已删除但尚未完全从存储中移除的文档数量。
  • store.size:索引当前占用的总物理存储空间。
  • pri.store.size:主分片占用的物理存储空间。

查询指定文档id

GET /my_index/_doc/doc_id

返回如下:

{
	"_index": "my_index",
	"_type": "_doc",
	"_id": "1",
	"_version": 3,
	"_seq_no": 2,
	"_primary_term": 2,
	"found": true,
	"_source": {
		"field1": "123",
		"field2": "456"
	}
}

这个命令会返回一个包含以下字段的 JSON 响应:

  • _index:文档所在的索引。
  • _type:文档的类型。在 7.x 版本中,这通常是 _doc
  • _id:文档的 ID。
  • _version: 文档的版本号。每当文档更新时,此数字都会增加。
  • _seq_no:序列号,每次对文档进行操作时此数字会增加。
  • _primary_term: 主要期限数,主要用于处理并发控制。
  • found:如果找到了文档,则此值为 true;否则,为 false。
  • _source: 文档的原始内容。

如果没有找到与给定 ID 匹配的文档,Elasticsearch 会返回一个状态码为 404 的响应,并且 found 字段的值将为 false。

添加 & 更新数据

PUT /index/_doc/doc_id
{
 JSON数据
}

//例如:PUT /my_index/_doc/1
//{
//  "field1": "123",
//  "field2": "456"
//}

PUT既可以用于添加数据,也可以用于更新数据,比如我想更新文档 1 的name字段为:小明,可以这么写:

PUT /my_index/_doc/1
{
"name": "小明"
}

注意:PUT既可以用于插入,也可以用于更新,所以PUT的更新是全量更新,而不是部分更新。也就是上面的语句执行之后,文档会被直接替换,只会有name字段,字段值为小明

如果我们只想部分更新文档中的字段,可以使用POST,示例如下:

POST /index/_update/1
{
	"doc": {
		"name": "小明"
	}
}

这个命令只会更新文档中的 name 字段为小明。其他字段还是保留原样。

cat命令

cat命令在ES中会经常使用,下面介绍cat命令中常用的几个命令。

参数

cat命令组成形式是:GET /_cat/indices?format=json&pretty?之前是命令,之后是参数,多个参数用&分隔。

参数有下:

//v 显示更加详细的信息
GET /_cat/master?v
//help 显示命令结果字段说明
GET /_cat/master?help
//h 显示命令结果想要展示的字段
GET /_cat/master?h=ip,node
GET /_cat/master?h=i*,node
//format 显示命令结果展示格式,支持格式类型:text json smile yaml cbor
GET /_cat/indices?format=json&pretty
//s 显示命令结果按照指定字段排序
GET _cat/indices?v&s=index:desc,docs.count:desc

常用命令

aliases :显示别名

GET /_cat/aliases

获取所有索引别名,如果想获得某个索引的别名可以使用:GET index/alias

allocation :显示每个节点的分片数和磁盘使用情况

GET /_cat/allocation

count :显示整个集群或者索引的文档个数

GET /_cat/count
GET /_cat/count/index

fielddata :显示每个节点字段所占的堆空间

GET /_cat/fielddata
GET /_cat/fielddata?fields=name,addr

health :显示集群是否健康

GET /_cat/health

indices :显示索引的情况

GET /_cat/indices
GET /_cat/indices/index

master: 显示master节点信息

GET /_cat/master

nodes :显示所有node节点信息

GET /_cat/nodes

recovery :显示索引恢复情况

当索引迁移的任何时候都可能会出现恢复情况,例如,快照恢复、复制更改、节点故障或节点启动期间。

GET /_cat/recovery

thread_pool :显示每个节点线程运行情况

GET /_cat/thread_pool
GET /_cat/thread_pool/bulk
GET /_cat/thread_pool/bulk?h=id,name,active,rejected,completed

shards :显示每个索引各个分片的情况

展示索引的各个分片,主副分片,文档个数,所属节点,占存储空间大小等信息。

GET /_cat/shards
GET /_cat/shards/index
GET _cat/shards?h=index,shard,prirep,state,unassigned.reason

分片的状态:INITIALIZING初始化;STARTED分配完成;UNASSIGNED不能分配;可以通过unassigned.reason属性查看不能分配的原因。

segments :显示每个segment的情况

包括属于索引,节点,主副,文档数等

GET /_cat/segments
GET /_cat/segments/index

templates :显示每个template的情况文章来源地址https://www.toymoban.com/news/detail-782819.html

GET /_cat/templates
GET /_cat/templates/mytempla*

到了这里,关于一起学Elasticsearch系列-索引的CRUD的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一起学Elasticsearch系列-模糊搜索

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 在 Elasticsearch 中,模糊搜索是一种近似匹配的搜索方式。它允许找到与搜索词项相似但不完全相等的文档。 前缀匹配通过指定一个前缀值,搜索并匹配索引中指定字段的文档,找出那些以该前缀开头的结果

    2024年02月01日
    浏览(29)
  • 一起学Elasticsearch系列-聚合查询

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 聚合查询是 Elasticsearch 中一种强大的数据分析工具,用于从索引中提取和计算有关数据的统计信息。聚合查询可以执行各种聚合操作,如计数、求和、平均值、最小值、最大值、分组等,以便进行数据汇总和

    2024年01月22日
    浏览(38)
  • 一起学Elasticsearch系列-Query DSL

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 DSL是Domain Specific Language的缩写,指的是为特定问题领域设计的计算机语言。这种语言专注于某特定领域的问题解决,因而比通用编程语言更有效率。 在Elasticsearch中,DSL指的是Elasticsearch Query DSL,是一种以J

    2024年02月01日
    浏览(52)
  • 一起学Elasticsearch系列-写入和检索调优

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 当涉及到大规模数据存储和检索时,Elasticsearch以其快速、高效和强大的搜索能力而闻名,并被广泛应用于各种场景,例如日志分析、全文搜索和实时数据分析。 然而,并不是只要将数据存入ES就可以立即获

    2024年02月03日
    浏览(29)
  • 8.ElasticSearch系列之索引模板与索引

    1. 索引模板创建索引 可以通过kibana工具进行创建索引模板 也可以自定义语句,如创建poi索引模板 2. 索引新增字段及重建 3. 远程索引同步

    2024年02月12日
    浏览(31)
  • (五) ElasticSearch 数据类型和文档CRUD操作

    官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#_complex_datatypes 核心数据类型是 Elasticsearch 最基本和常用的数据类型,用于存储大部分数据。这些核心数据类型包括: Text(文本):用于存储长文本数据,进行全文搜索和分析。 Keyword():

    2024年02月11日
    浏览(27)
  • 【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

    ElasticSearch系列整体栏目 内容 链接地址 【一】ElasticSearch下载和安装 https://zhenghuisheng.blog.csdn.net/article/details/129260827 【二】ElasticSearch概念和基本操作 https://blog.csdn.net/zhenghuishengq/article/details/134121631 【三】ElasticSearch的高级查询Query DSL https://blog.csdn.net/zhenghuishengq/article/details/1

    2024年02月03日
    浏览(33)
  • ElasticSearch系列 - 分片内部原理之动态更新索引、近实时搜索、持久化变更、段合并

    01. ElasticSearch 倒排索引是什么? Elasticsearch的倒排索引是一种数据结构,它将每个单词与包含该单词的文档列表相关联。倒排索引的优势在于它可以快速地进行全文搜索和相关性评分。 倒排索引由3个主要部分组成:词项、词汇表、倒排列表。其中词项是索引中最小的存储和查

    2024年02月05日
    浏览(33)
  • elasticsearch批量索引数据示例

       示例数据文件document.json(index表示在索引中增加或替换现有文档,create表示如果文档不存在则添加文档,delete表示删除文档): { \\\"index\\\": { \\\"_index\\\": \\\"addr\\\", \\\"_type\\\": \\\"contact\\\", \\\"_id\\\": 1 }} { \\\"name\\\": \\\"Fyodor Dostoevsky\\\", \\\"country\\\": \\\"RU\\\" } { \\\"create\\\": { \\\"_index\\\": \\\"addr\\\", \\\"_type\\\": \\\"contact\\\", \\\"_id\\\": 2 }} { \\\"name\\\": \\\"Erich M

    2024年02月08日
    浏览(36)
  • Elasticsearch中复制一个索引数据到新的索引中

    我有时候,需要调试一个已经存在的ES索引,需要从已有的索引复制数据到新的索引中去。 这里我借助一个GUI工具,来解决这个问题,底层它是使用Reindex的API实现索引数据复制的。利用Reindex API搞不定这个事情,原索引mapping结构不会被复制。 # 步骤 选中已存在的redix菜单,准

    2024年02月22日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包