(三)ElasticSearch核心知识理解(目录结构,索引,RESTful)

1.ElasticSearch目录结构

  • bin:包含 Elasticsearch 的可执行文件,如 elasticsearch(用于启动 Elasticsearch)、elasticsearch-plugin(用于管理插件)等。

  • config:包含 Elasticsearch 的配置文件。

    • elasticsearch.yml:主要的配置文件,用于配置 Elasticsearch 的各种设置,如集群名称、节点设置、网络配置等。
    • jvm.options:用于配置 Elasticsearch 节点的 JVM 设置,如内存分配、垃圾回收等。
    • log4j2.properties:用于配置 Elasticsearch 的日志记录设置。
      data:默认的数据目录,用于存储 Elasticsearch 的索引数据和相关文件。每个节点在该目录下会有一个子目录,存放该节点的数据。
  • logs:存放 Elasticsearch 的日志文件。

  • plugins:用于存放 Elasticsearch 的插件文件。当你安装第三方插件时,它们将被放置在该目录下。

  • config/scripts:存放 Elasticsearch 的脚本文件,如查询脚本、聚合脚本等。

  • config/templates:存放 Elasticsearch 的索引模板文件,用于定义索引的映射、设置和别名。

  • config/ingest-geoip:包含用于处理地理位置信息的 Ingest GeoIP 插件的数据文件。

这只是 Elasticsearch 目录结构的基本示例,实际安装的目录结构可能因版本和安装方式而有所不同。安装 Elasticsearch 后,你可以通过浏览这些目录和文件来深入了解 Elasticsearch 的配置和数据存储机制,并进行相应的定制和管理。

2.ElasticSearch核心概念理解

  • 索引(Index):索引是 Elasticsearch 中最高层次的数据容器,它类似于关系数据库中的数据库。索引包含一组具有相似结构的文档,并为这些文档提供了快速的搜索、检索和分析能力。(类似于关系数据库MySQL 中的数据库

  • 文档(Document):文档是 Elasticsearch 存储和索引的基本单位。它是一条具有结构化数据的 JSON 文档,可以是任意类型的数据,如产品信息、用户数据、日志条目等。每个文档都有一个唯一的标识符(ID),用于在索引中唯一标识和检索文档。(类似于关系数据库MySQL中的表的一行数据

  • 类型(Type) :在 Elasticsearch 7.x 及更高版本中,类型的概念已被弃用。在早期版本中,索引可以包含多个类型,用于对不同类型的文档进行分类。然而,从 Elasticsearch 7.x 开始,一个索引只能包含一个默认类型 _doc,类型的概念被逐渐淘汰。(类似于关系数据库MySQL中的表

    扫描二维码关注公众号,回复: 15564238 查看本文章
  • 映射(Mapping):映射定义了索引中的文档结构和字段的数据类型。它告诉 Elasticsearch 如何存储和索引文档中的字段,并决定如何解析和处理查询请求。映射可以手动定义,也可以由 Elasticsearch 根据文档的内容自动创建。(类似于关系数据库MySQL中的表的结构,包括列名、数据类型和约束

  • 查询(Query):查询用于在 Elasticsearch 中搜索和检索文档。Elasticsearch 提供了丰富的查询功能,包括全文搜索、精确匹配、范围查询、聚合等。你可以使用查询语言(如 Query DSL)或简化的查询字符串语法来构建查询。

  • 聚合(Aggregation):聚合是一种用于分析和汇总数据的功能。它允许你根据指定的条件对文档进行分组、计数、求和、平均值、最大值、最小值等操作,并返回聚合结果。聚合可以帮助你洞察数据的统计特征和模式。

  • 集群(Cluster):集群是由一个或多个 Elasticsearch 节点组成的逻辑组。在集群中,数据被分片和复制到多个节点上,以提供高可用性和容错能力。集群管理和协调节点之间的数据分发、负载均衡和故障恢复。

  • 节点(Node):节点是 Elasticsearch 集群中的一个单独的实例,它是集群的一部分。节点可以是主节点(Master Node)或数据节点(Data Node)。主节点负责管理集

  • 分⽚和副本(shard) :副本是分⽚的副本。分⽚有主分⽚(primary Shard)和副本分⽚(replica Shard)之分。
    ⼀个Index数据在物理上被分布在多个主分⽚中,每个主分⽚只存放部分数据。
    每个主分⽚可以有多个副本,叫副本分⽚,是主分⽚的复制。

3.ElasticSearch,RESTful API介绍

Elasticsearch 提供了 RESTful API(Representational State Transfer)作为与其进行交互的主要方式。通过 RESTful API,你可以使用各种 HTTP 方法(如 GET、POST、PUT、DELETE)来执行各种操作,包括索引数据、搜索文档、执行聚合、管理索引等。
以下是一些常用的 Elasticsearch RESTful API:

索引文档:

PUT /index/_doc/id:创建或替换指定 ID 的文档。
POST /index/_doc:创建新的文档,Elasticsearch 自动生成 ID。
GET /index/_doc/id:获取指定 ID 的文档。
DELETE /index/_doc/id:删除指定 ID 的文档。

搜索:

GET /index/_search:执行全文搜索操作,返回匹配查询条件的文档。
POST /index/_search:执行复杂的搜索查询,可以包含过滤器、排序、聚合等。

聚合:

POST /index/_search:结合聚合查询来对文档进行分组、计数、求和、平均值、最大值、最小值等操作。
GET /index/_search:使用 URI 查询字符串语法执行简单的聚合操作。

索引管理:

PUT /index:创建新的索引。
DELETE /index:删除指定索引。
GET /index/_mapping:获取索引的映射信息。

集群和节点管理:

GET /_cat/health:获取集群的健康状态。
GET /_cat/nodes:获取集群中的节点信息。
GET /_cat/indices:获取集群中的索引信息。

以上只是 Elasticsearch RESTful API 的一些示例,实际使用中还有更多的 API 和参数可用于执行各种操作。你可以通过发送 HTTP 请求来与 Elasticsearch 进行交互,使用适当的路径和参数来执行所需的操作,并通过响应获取结果和数据。

要使用 Elasticsearch RESTful API,你可以使用任何支持 HTTP 请求的工具,如 cURL、Postman、Python requests 等。另外,Elasticsearch 还提供了官方的客户端库,可简化与 Elasticsearch 的交互,如 Elasticsearch-PHP、Elasticsearch-Java、Elasticsearch-Py 等。

猜你喜欢

转载自blog.csdn.net/csdn570566705/article/details/131200014
今日推荐