ElasticSearch 核心概念以及常用命令

这篇具有很好参考价值的文章主要介绍了ElasticSearch 核心概念以及常用命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

核心概念

索引

概念:

这里可以类比与 MySQL 中的表,但是不同于表

在 es 中索引有三层含义

  • 表示源文件数据:通常说集群中有 user 索引,即表示集群服务中存在 user 这样一张“表”
  • 表示索引文件:以加速查询检索为目的而设计和创建的数据文件,通常承载于某些特定的数据结构,如哈希、FST 等。例如:通常所说的 正排索引 和 倒排索引(也叫正向索引和反向索引)。就是当前这个表述,索引文件和源数据是完全独立的,索引文件存在的目的仅仅是为了加快数据的检索,不会对源数据造成任何影响
  • 表示创建数据的动作:通常说创建或添加一条数据,在 ES 的表述为索引一条数据或索引一条文档,或者 index 一个 doc 进去。此时索引一条文档的含义为向索引中添加数据。

组成:

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

aliases:

索引别名,

es 中索引一旦创建,不允许修改结构,但是可以新建一个索引,然后将原索引数据迁移到新索引,再对新索引起别名,间接实现修改索引的目的

mappings:

映射关系,定义了索引中包含哪些字段,以及字段的类型、长度、分词器等

如下:

home、name、salary 表示字段名,类似与 MySQL 中的表字段

type:表示类型,

其中的常见的比如:

  • text:文本【数据保存后会自动对该字段的值进行分词】
  • keyword:表示不对该字段进行分词,全值保存,比如姓名
  • long:表示数字
  • float:小数
  • ...

analyzer:表示指定的分词器

{
  "es_db" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "home" : {
          "type" : "text"
        },
        "name" : {
          "type" : "keyword"
        },
        "salary" : {
          "type" : "float"
        },
        "gender": {
          "type": "text",
          "analyzer": "standard"
        } 
      }
    },
    "settings" : {}
  }
}

mappings 中常见的类型如下:

参数名称

释义

analyzer

指定分析器,只有 text 类型字段支持。

copy_to

该参数允许将多个字段的值复制到组字段中,然后可以将其作为单个字段进行查询

dynamic

控制是否可以动态添加新字段,支持以下四个选项:

true:(默认)允许动态映射

false:忽略新字段。这些字段不会被索引或搜索,但仍会出现在_source返回的命中字段中。这些字段不会添加到映射中,必须显式添加新字段。

runtime:新字段作为运行时字段添加到索引中,这些字段没有索引,是_source在查询时加载的。

strict:如果检测到新字段,则会抛出异常并拒绝文档。必须将新字段显式添加到映射中。

doc_values

为了提升排序和聚合效率,默认true,如果确定不需要对字段进行排序或聚合,也不需要通过脚本访问字段值,则可以禁用doc值以节省磁盘空间(不支持 text 和 annotated_text)

eager_global_ordinals

用于聚合的字段上,优化聚合性能。

enabled

是否创建倒排索引,可以对字段操作,也可以对索引操作,如果不创建索引,任然可以检索并在_source元数据中展示,谨慎使用,该状态无法修改。

fielddata

查询时内存数据结构,在首次用当前字段聚合、排序或者在脚本中使用时,需要字段为fielddata数据结构,并且创建倒排索引保存到堆中

fields

给 field 创建多字段,用于不同目的(全文检索或者聚合分析排序)

format

用于格式化代码,如

"data":{ "type": "data", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }

index

是否对创建对当前字段创建倒排索引,默认 true,如果不创建索引,该字段不会通过索引被搜索到,但是仍然会在 source 元数据中展示。

norms

是否禁用评分(在filter和聚合字段上应该禁用)

null_value

为 null 值设置默认值

search_analyzer

设置单独的查询时分析器

settings:

索引设置,常见设置如 分片和副本的数量等

文档:Document

文档是 ES 中的最小数据单元。它是一个具有结构化 JSON 格式的记录。文档可以被索引并进行搜索、更新和删除操作。

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

文档元数据,所有字段均以下划线开头,为系统字段,用于标注文档的相关信息:

  • _index:文档所属的索引名
  • _type:文档所属的类型名
  • _id:文档唯一 id
  • _source: 文档的原始 Json 数据
  • _version: 文档的版本号,修改删除操作 _version 都会自增1
  • _seq_no: 和 _version 一样,一旦数据发生更改,数据也一直是累计的。Shard 级别严格递增,保证后写入的 Doc 的 _seq_no 大于先写入的 Doc 的 _seq_no。
  • _primary_term: _primary_term 主要是用来恢复数据时处理当多个文档的 _seq_no 一样时的冲突,避免 Primary Shard 上的写入被覆盖。每当 Primary Shard 发生重新分配时,比如重启,Primary选举等,_primary_term 会递增1。

常用指令

es 中指令都是基于 restful 风格

创建索引

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#put / + 索引名
PUT /db_1

# 也可以指定一些配置
PUT /db_2
{
  "settings": {
    "number_of_shards": "1",
    "number_of_replicas": "1"
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword"
      },
      "age" : {
          "type" : "long"
      },
      "address" : {
          "type" : "text"
      }
    }
  }
}

查询索引

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#查看索引
GET /db_2

删除索引

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#删除索引
DELETE /db_1

索引文档

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#索引文档
PUT /db_2/_doc/1
{
  "name":"张三",
  "age":18,
  "address":"和月努力学编程"
}

查询文档

有两种方式:一种模糊查询,一种精准查询

模糊查询

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

这里补充一个指令,查看文档字段分词效果

查看分词结果

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#查看分词结果
#ik_max_word:会将文本做最细粒度的拆分
#analyzer:指定分词器
POST _analyze
{
    "analyzer":"ik_max_word", 
    "text":"和月努力学习编程"
}

精准查询

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#精准查询
GET /db_2/_search
{
  "query": {
    "term": {
      "name": "张三"
    }
  }
}

更新文档

全文替换

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

可以看到更新成功,这里表示全文替换,并不是更新其中一个字段

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#更新文档 这种方式是全文替换,PUT 和 POST 效果是一样的
PUT /db_2/_doc/1
{
  "address":"和月努力学编程"
}

GET /db_2/_doc/1

部分更新

可以看到当前 age 是 18

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

执行部分更新命令

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

再次查询,可以看到只有 age 变化了

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#部分更新
POST /db_2/_update/1
{
  "doc": {
    "age": 16
  }
}

GET /db_2/_doc/1

删除文档

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

再次查询已经查不到 id 为 1 的文档了,删除成功

ElasticSearch 核心概念以及常用命令,elasticsearch,搜索引擎,es

#删除文档
DELETE /db_2/_doc/1

GET /db_2/_doc/1

感谢观看!!!本次先介绍这么多,感兴趣的小伙伴可以关注留言,持续更新中文章来源地址https://www.toymoban.com/news/detail-838142.html

到了这里,关于ElasticSearch 核心概念以及常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Elasticsearch】几点核心概念

    索引 一个索引就是一个拥有几分相似特征的文档的集合。 Eg:一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。 能搜索的数据必须索引,这样的好处是可以提高查询速度 类型 一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。 ES

    2024年02月02日
    浏览(31)
  • ElasticSearch的核心概念简单描述

    我正在参加「掘金·启航计划」 ES是面向文档,下面表格是和关系型数据库的对比,一切都是JSON 关系数据库(Mysql) ES 数据库(database) 索引(indices) 和数据库一样 表(tables) types 慢慢会被弃用 7.0已经过时 8.0会彻底废弃 行(rows) documents (数据)文档 字段(columns) fields ES中可以包含多个索引

    2024年02月10日
    浏览(30)
  • 一起学Elasticsearch系列-核心概念

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 开个新的坑,创作关于Elasticsearch的系列文章 首先,让我们简单的了解一下Elasticsearch: Elasticsearch是一个开源的搜索和分析引擎,支持近实时的大数据存储、搜索和分析。它基于Apache Lucene项目,提供全文搜索

    2024年02月01日
    浏览(38)
  • ElasticSearch 的核心概念和使用场景

    作者:禅与计算机程序设计艺术 ElasticSearch 是一种开源的分布式搜索和分析引擎。基于 Lucene 搜索框架,它提供了一个高效、可靠、快速的搜索和数据分析解决方案。它具有云计算和超大规模的搜索功能。ElasticSearch 最初由 Elasticsearch 公司开发并于 2010 年 9 月份推出首个版本。

    2024年02月08日
    浏览(32)
  • elasticsearch高级篇:核心概念和实现原理

    1.1 索引(index) 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删

    2023年04月08日
    浏览(27)
  • 【ES】Elasticsearch核心基础概念:文档与索引

    es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Document和Index的时候会使用到。 当我们把es服务器启动起来之后,要怎么调用呢?

    2024年02月05日
    浏览(38)
  • elasticSearch核心概念的介绍(十四):ES集群索引分片管理

    上一章节我们对ES的集群进行了搭建,有兴趣的朋友可以参考一下elasticSearch核心概念的介绍(十三):docker搭建ES集群 这里我们来介绍了ES集群索引的分片管理 ES集群索引分片管理 介绍 分片(shard):因为ES是个分布式的搜索引擎,所以索引通常都会分解成不同部分,而这些

    2023年04月27日
    浏览(41)
  • Elasticsearch权威指南:深度解析搜索技术核心概念、原理及实践

    作者:禅与计算机程序设计艺术 2010年,当时仅仅30岁的Elasticsearch创始人黄文坚就率先发布了开源分布式搜索引擎Elasticsearch。从此, Elasticsearch 名扬天下,成为了当前搜索领域的翘楚。随着 Elasticsearch 的快速崛起,越来越多的人开始关注并应用 Elasticsearch 来进行搜索服务。

    2024年02月10日
    浏览(39)
  • 04_手工画图剖析Elasticsearch核心概念:NRT、索引、分片、副本等

    2.elasticsearch的核心概念 (1)Near Realtime (NRT):近实时, 从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级 (2) cluster集群:包括多个节点, 每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的, 对于中小型

    2024年02月09日
    浏览(40)
  • 揭秘Elasticsearch:一文读懂分布式搜索与分析引擎的核心概念

            Elasticsearch 是一个开源、分布式、实时搜索和分析引擎,专门用于处理大规模数据的快速检索与分析。它建立在 Apache Lucene 的基础上,但提供了比 Lucene 更为丰富的功能和友好的RESTful API 接口,使得开发者能够轻松地进行全文搜索、结构化搜索以及对海量数据进行

    2024年02月19日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包