- 文档(document)
- JSON文档
- 文档的元数据
- 索引
- 索引的不同语义
- Type
- 传统关系型数据库和es结构对比
- 什么是数据建模?
- 如何对字段进行建模?
- 字段类型
-
Elasticsearch是面向文档的,文档是所有可搜索数据的最小单元。(可以理解为数据库中的一条记录)
- 日志文件中的日志项
- 一本电影的具体信息/一张唱片的详细信息
- MP3播放器里的一首歌/一篇PDF文档中的具体内容
-
文档会被序列化成JSON格式,保存在Elasticsearch中
- JSON对象由字段组成
- 每个字段都有对应的字段类型(字符串、数值、布尔、日期、二进制、范围类型)
-
每个文档都有一个UniqueID
- 你可以自己指定ID
- 或者通过Elasticsearch自动生成
- 一篇文档包含了一系列的字段。类似于数据库表中的一条记录。
- JSON文档格式灵活,不需要预先定义格式(不需要和数据库那样提前定义表结构,提供建表语句等)
- 字段的类型可以自己指定,也可以通过Elasticsearch自动推算。
- 支持数组/嵌套。
{ "_index" : "index", "_type" : "_doc", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "name" : "程大帅" } }
- _index:文档所属的索引
- _type:文档所属的类型名
- _id:文档的唯一id
- _source:文档的原始JSON数据
- _all:整合所有字段内容到该字段(废除)
- _version:文档的版本信息
- _source:相关性打分
概念:简单说索引是文档的容器,是一类文档的结合(类似于数据库中的表)
- 每个索引都有自己的mapping定义,用于定义包含文档的字段名和字段类型
- Shard体现了物理空间的概念,索引中的数据分布在不同的shard上。
- Mapping定义了索引字段的名称和类型
- Setting定义不同的数据分布
{ "index" : { // 索引名 "aliases" : { }, "mappings" : { "properties" : { "name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } }, "settings" : { "index" : { "routing" : { "allocation" : { "include" : { "_tier_preference" : "data_content" } } }, "number_of_shards" : "1", "provided_name" : "index", "creation_date" : "1639913482690", "number_of_replicas" : "1", "uuid" : "Qxkdm_RvT-uHH3XiYJEpSg", "version" : { "created" : "7160099" } } } } }索引的不同语义
索引(动词)文档到Elasticsearch的索引(名词)中
名词:一个Elasticsearch集群中,可以创建很多个不同的索引。
动词:保存一个文档到Elasticsearch的过程也叫做索引(indexing)。ES中,可以理解为创建一个倒排索引的过程
名词:我们通常理解的索引:B树索引,倒排索引
在7.0之前,一个index可以设置多个Types
在6.0开始,Type已经被废弃。7.0开始一个索引只能创建一个Type ——”_doc“。
es 提供高性能的全文检索,对搜索结构进行聚合分析等。
RDMS提供事务性,联合查询等。
数据建模是创建数据模型的过程。
数据模型是对真实世界进行抽象描述的一种工具和方法,实现对像是世界的映射。
三个过程:概念模型 - 逻辑模型 - 数据模型(遵循第三范式)
数据模型:结合具体的数据库,在满足业务读写性能等需求的前提下,确定最终定义。
字段类型 - 是否需要搜索及分词 - 是否需要聚合及排序 - 是否需要额外的存储
字段类型-
Text
- 用于全文本字段,文本会被Analyzer分词
- 默认不支持聚合分析及排序。需要设置fielddata为true
-
Keyword
- 用于id、枚举、不需要分词的文本。如:电话号码,email地址,手机号码,邮政编码,性别等。
- 适用于Filter(精准匹配),Sorting和Aggregations
-
设置多字段类型
- 默认会为文本类型设置成text,并设置一个keyword的子字段
- 在处理人类语言时,通过增加“英文”,“拼音”和“标准”分词器,提高搜索结构
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)