Elasticsearch要点简记
1、ES概述
ES(elasticsearch)是一个分布式搜索和分析引擎,它用于快速、实时地搜索和分析大规模数据。ES是一个面向文档的分布式搜索引擎。它的数据模型基于文档,每个文档是一个包含了JSON格式数据的独立单元。文档可以属于不同的索引,每个文档可以具有不同的结构。
小记:
- Elasticsearch提供了一个易于使用的RESTful
API。可以使用HTTP请求来执行各种操作,例如索引文档、执行搜索查询、管理索引和节点等。 - 专注于全文搜索和复杂查询,支持分词、模糊搜索、短语匹配等高级搜索功能。
2、基础概念
(1)索引、文档、字段
索引(Index):是Elasticsearch中的一个逻辑容器,用于组织和存储相关的文档数据。类似于关系数据库中的表。
文档(Document):文档是存储在索引中的基本数据单元,通常以JSON格式表示。每个文档代表了一个独立的数据记录。类似于关系数据库中的一行记录。
字段(Field):是文档中的数据项,它们包含了文档的具体信息。每个字段都有一个名称和一个对应的值。例如,一个产品文档可以包含字段如“productName”、“productDescription”、“price”等,每个字段存储相关信息。
一个索引可以包含多个文档,这些文档代表了不同类型的数据。每个文档包含多个字段,每个字段存储文档的具体数据。
(2)映射
映射(Mapping)用于定义索引中文档的结构和字段的属性。映射指定了每个字段的数据类型、如何分析文本、是否存储原始数据等信息。映射确保了索引中的文档被正确地存储和检索,并允许执行高级的搜索和分析操作。通常,映射可以自动创建,但在需要更精细的控制时,也可以手动定义映射。以下是关于映射的详细介绍:
字段的数据类型: 映射确定了每个字段的数据类型,例如文本、数值、日期、布尔值等。指定正确的数据类型有助于Elasticsearch正确地索引和搜索数据。
分析器(Analyzer): 对于文本字段,映射可以指定使用哪种分析器来处理文本数据。分析器决定了如何将文本拆分成词条,以及如何处理这些词条,例如小写化、删除停用词等。
日期格式: 对于日期字段,映射可以定义日期的格式,以确保正确的日期解析和排序。
(3)DSL
DSL(Domain-Specific Language 领域特定语言),它是一种用于构建和执行复杂查询的结构化查询语言。DSL是Elasticsearch查询的核心组成部分,用于与Elasticsearch进行交互,从而检索和操作数据。DSL查询通常以JSON(JavaScript Object Notation)格式编写,因此它是一种使用JSON语法的查询语言。
3、架构原理
主节点(Master Node): 负责集群的管理和协调,包括索引和分片的创建、删除、重新分配等。它还负责维护集群状态信息。
数据节点(Data Node): 负责存储索引数据和执行搜索操作。
协调节点(Coordinator Node): 不存储数据,但负责接收来自客户端的搜索和查询请求,然后将请求分发到适当的数据节点。
候选主节点(Candidate Master Node): 是潜在的主节点候选者,当主节点失败时可以自动接管主节点的角色。
4、索引字段的数据类型
(1)keyword族
-
keyword: 用于结构化内容,如id、电子邮件地址、主机名、状态码、邮政编码或标签。
-
constant_keyword: 表示始终包含相同值(常量)的keyword字段。
-
wildcard: 用于机器生成的非结构化的内容。wildcard字段类型针对大值或高基数的字段进行了优化。
Keyword 字段经常用于结构化内容的查询,通常用于过滤、排序、聚合和 term-level queries。例如,id、电子邮件地址、主机名、状态码、邮政编码或标签等。
(2)text
最适合于非结构化的内容(全文索引),text字段不用于排序,也很少用于聚合,text字段会被分析(分词),也就是说,在建立索引之前,它们会通过分析器(分词器)将字符串转换为单个词的列表,例如,电子邮件的正文或产品的描述。
(3)数值类型
byte、short、integer、long、float、double、unsigned_long、half_float、scaled_float(一个使用long表示的浮点数,精度由一个换算系数决定,比如俩位小数,3.14 缩放因子是100的话,在文档中就存储314,取的时候除以100,表示金额时可以使用))
(4)日期类型
代表UNIX诞生的