es8语法

ads

大家好,这里是 Double凯,下面是这一期的后端文章,喜欢的朋友点赞点在看哦~

ElasticSearch8新特性

  • 减少内存堆使用,完全支持 ARM 架构,引入全新的方式以使用更少的存储空间,从 而让每个节点托管更多的数据。
  • 降低查询开销,在大规模部署中成效尤为明显
  • 提高日期直方图和搜索聚合的速度,增强页面缓存的性能,并创建一个新的 “pre-filter”搜索短语。
  • 在 Elasticsearch 7.3 和 Elasticsearch 7.4 版中,引入了对矢量相似函数的支持 在最新发布的 8.0 版本中,也同样增加和完善了很多新的功能
  • 增加对自然语言处理 (NLP) 模型的原生支持,让矢量搜索功能更容易实现,让客户和 员工能够使用他们自己的文字和语言来搜索并收到高度相关的结果。
  • 直接在 Elasticsearch 中执行命名实体识别、情感分析、文本分类等,而无需使用额外 的组件或进行编码。
  • Elasticsearch 8.0 基于 Lucene 9.0 开发的,那些利用现代 NLP 的搜索体验,都可以借 助(新增的)对近似最近邻搜索的原生支持,快速且大规模地实现。通过 ANN,可以 快速并高效地将基于矢量的查询与基于矢量的文档语料库(无论是小语料库、大语料库 还是巨型语料库)进行比较。

ElasticSearch基础语法操作

索引操作

创建索引

PUT myindex
重复创建索引ES会报错如下

查询指定索引

根据索引名称查询指定索引,如果查询到,会返回索引的详细信息

如果查询的索引不存在的是会返回如下报错信息

查询所有索引

为了方便,可以查询当前所有索引数据。这里请求路径中的_cat 表示查看的意思,indices
表示索引,所以整体含义就是查看当前 ES 服务器中的所有索引,就好像 MySQL 中的 show
tables 的感觉

这里的查询结果表示索引的状态信息,按顺序数据表示结果如下:

内容 含义 具体描述
green health 当前服务器健康状态:
green(集群完整) yellow(单点正常、集群不完整)
red(单点不正常)
open status 索引打开、关闭状态
myindex index 索引名
Swx2xWHLR6yv23kTrK3sAg uuid 索引统一编号
1 pri 主分片数量
1 rep 副本数量
0 docs.count 可用文档数量
0 docs.deleted 文档删除状态
450b store.size 主分片和副分片整体占空间大小
225b pre.store.size 主分片占空间大小

删除索引

删除存在索引:

删除不存在的索引,报错如下:

文档操作

文档是 ES 软件搜索数据的最小单位, 不依赖预先定义的模式,所以可以将文档类比为表的
一行JSON类型的数据。我们知道关系型数据库中,要提前定义字段才能使用,在Elasticsearch
中,对于字段是非常灵活的,有时候,我们可以忽略该字段,或者动态的添加一个新的字段。

创建文档

索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数
据库中的表数据,添加的数据格式为 JSON 格式

POST myindex/_doc
{
"id":1,
"name":"yinkai",
"age":12,
"city":"beijing"
}

返回的状态是

{
"_index": "myindex",
"_id": "HyYWNYwBx5lhD1Y3qaZT",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}

此处因为没有指定数据唯一性标识,所以无法使用 PUT 请求,只能使用 POST 请求,且对 数据会生成随机的唯一性标识。否则会返回错误信息。
如果在创建数据时,指定唯一性标识,那么请求范式 POST,PUT 都可以。
创建索引还有使用_create方式,使用这种方式如果Id已经存在,就会报错

{
  "error": {
    "root_cause": [
      {
        "type""version_conflict_engine_exception",
        "reason""[6]: version conflict, document already exists (current version [1])",
        "index_uuid""lUJz91IITzG7grVdUhDi3A",
        "shard""0",
        "index""es_db"
      }
    ],
    "type""version_conflict_engine_exception",
    "reason""[6]: version conflict, document already exists (current version [1])",
    "index_uuid""lUJz91IITzG7grVdUhDi3A",
    "shard""0",
    "index""es_db"
  },
  "status"409
}

创建索引唯一标识

PUT myindex/_doc/1001
{
  "id":"1001",
  "name":"double凯",
  "age":30
}

查询文档

根据唯一性标识查询文档

GET myindex/_doc/1001
{
  "_index""myindex",
  "_id""1001",
  "_version"1,
  "_seq_no"3,
  "_primary_term"5,
  "found"true,
  "_source": {
    "id""1001",
    "name""double凯",
    "age"30
  }
}

修改文档

修改文档本质上和新增文档是一样的,如果存在就修改,不存在就新增
并发场景下修改文档注意事项
全量更新,整个json都会替换,格式: [PUT | POST] /索引名称/_doc/id
如果文档存在,现有文档会被删除,新的文档会被索引
使用_update部分更新,格式: POST /索引名称/_update/id
update不会删除原来的文档,而是实现真正的数据更新_seq_no和_primary_term是对_version的优化,7.X版本的ES默认使用这种方
式控制版本,所以当在高并发环境下使用乐观锁机制修改文档时,要带上当前文
档的_seq_no和_primary_term进行更新:

删除文档

删除一个文档不会立即从磁盘上删除,它只是被标记成已经删除
DELETE myindex/_doc/HyYWNYwBx5lhD1Y3qaZT

{
  "_index""myindex",
  "_id""HyYWNYwBx5lhD1Y3qaZT",
  "_version"2,
  "result""deleted",
  "_shards": {
    "total"2,
    "successful"1,
    "failed"0
  },
  "_seq_no"1,
  "_primary_term"1
}

文档批量操作

批量操作可以减少网络连接所产生的开销,提升性能

  • 支持在一次API调用中,对不同的索引进行操作
  • 可以在URI中指定Index,也可以在请求的Payload中进行
  • 操作中单条操作失败,并不会影响其他操作
  • 返回结果包括了每一条操作执行的结果

批量创建文档

POST /_bulk
"index" : { "_index" : "test""_id" : "1" } }
"field1" : "value1" }
"index" : { "_index" : "test""_id" : "2" } }
"field2" : "value2" }
"index" : { "_index" : "test""_id" : "3" } }
"field3" : "value3" }

批量修改文档

POST /_bulk
"update" : {"_id" : "1""_index" : "test"} }
"doc" : {"field1" : "new_value1"} }
"update" : {"_id" : "2""_index" : "test"} }
"doc" : {"field2" : "new_value2"} }
"update" : {"_id" : "3""_index" : "test"} }
"doc" : {"field3" : "new_value3"} }

批量删除文档

POST /_bulk
"delete" : { "_index" : "test""_id" : "1" } }
"delete" : { "_index" : "test""_id" : "2" } }
"delete" : { "_index" : "test""_id" : "3" } }

今天的ElasticSearch操作我们就先分享到这里,后期我们针对ElasticSearch高级查询进行详细的讲解,敬请期待

hello我们是Double凯的程序栈,关注我们,遨游知识海洋,共赴探索之旅

往期好文章

1. 推荐四个好用且绝对用得着的前端库

2. 四款开源富文本编辑器,支持Vue、React

3. ELK技术栈之ES8.x安装教程

4. 前端圈2023年现状

原创不易,感谢你读到这里 
如果喜欢这篇文章
还请多多支持 👇👇👇


最后编辑于:2024/1/21 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com