Elasticsearch基础知识点总结介绍

Elasticsearch基础知识点总结介绍

    • 总体
    • 原理
    • 基本概念
    • 基本数据类型

总体

  • Elasticsearch是一个基于Lucene的搜索引擎。它提供了具有HTTP Web和无架构JSON文档的分布 式,多租户能力的全文搜索引擎。Elasticsearch是用Java开发的,根据[Apache]许可条款作为开源 发布。

原理

  • Lucene 是著名的搜索开源软件,ElasticSearch 和 Solr 底层用的都是它。 分段存储是 Lucene 的思想。
  • 分词是给检索用的。
    英文:一个单词一个词,很简单。I am a student,词与词之间空格分隔。
    中文:市面上有各种各样的分词器, 一个强调的效率一个强调的准确率。
  • 正排索引:倒排针对的是正排,通过文档找文档内容。ES默认会对所有字段进行正排索引,但并不是所有字段都需要DocValues。所以合理配置DocValues可以节省存储空间。DocValues的使用场景一般是:需要针对某个Field排序、聚合、过滤和script。
  • 倒排索引:就是文档内容找文档。当然内容不是全部的,否则也不需要找文档了,内容就是几个分词而已。倒排索引是lucene的核心索引类型,采用链表的数据结构,倒排索引中的key就是一个term,value就是以doc_id形成的链表结构
    文本相似度TF-IDF:对匹配度的评分。
    TF = Term Frequency 词频,一个词在这个文档中出现的频率。值越大,说明这文档越匹配, 正向指标。
    IDF = Inverse Document Frequency 反向文档频率,反向指标,简单点说就是一个词在所有文档中都出现,那么这个词不重要。比如“的、了、我、好”这些词所有文档都出现,对检索毫无帮助。

基本概念

  • 集群(cluster):集群 是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的 联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要, 因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分。
  • 节点(node):节点是属于集群一部分的单个服务器。它存储数据并参与群集索引和搜索功能。
  • 分片(shard):一个节点的存储量是有限的,于是有了分片的概念。但是分片可能有丢失,于是有了副本的概念。因为Elasticsearch是一个分布式搜索引擎,所以索引通常被分割成分布在多个节点上的 被称为分片的元素。一个索引被分解成碎片以便于分发和扩展。
  • 副本(replica):副本主要是为了数据安全,防止分片损坏导致的服务不可用,也可以提高查询效率。
  • 索引(index):索引就像关系数据库中的“数据库”,在Elasticsearch中,索引是文档的集合。它有一个定义多种类型的映射。索引是逻辑名称空间,映射到一个或多个主分片,并且可以有零个或多个副本分片。 ElasticSearch =>索引 相当于 MySQL =>数据库
  • 类型(type):类型是索引的逻辑类别/分区,其语义完全取决于用户。最新版本已完全移除。
  • 文档(document):文档类似于关系数据库中的一行。不同之处在于索引中的每个文档可以具有不同的结构(字段),但是对于通用字段应该具有相同的数据类型。 ElasticSearch => Indices => Types =>具有属性的文档MySQL => Databases => Tables => Columns / Rows 可对应着看

基本数据类型

  • text/keyword,字符串,text用于全文索引,该类型的字段会被分词;keyword不分词,只能通过精确值搜索,如果字段需要进行过滤、排序、聚合,设置keyword类型。
  • Numeric,数值型,其中包含long, integer, short, byte, double, float, half_float, scaled_float共8种数值类型
  • Date,时间类型,可以通过预设的3种形式或者自定义的format来存储日期信息
  • Boolean,布尔类型,可以接受true/false/”true”/”false”值
  • binary,二进制字段是指用base64来表示索引中存储的二进制数据,可用来存储二进制形式的数据,例如图片。默认情况下,该类型的字段只存储不索引
  • range:具有大小关系的一个值区间,所以会用到gt、gte、lt、lte…等逻辑表示符

你可能感兴趣的:(elasticsearch,搜索引擎,lucene)