全文检索与ElasticSearch(一)——ES概述,正向索引与倒排索引,B+树,简单命令,Mapping

ElasticSearch概述

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful接口。它可以近乎实时的存储、检索数据;本身扩展性非常好,一个ES节点就可以认为是一个集群(默认支持集群),它可以扩展到上百台服务器。ES的生产环境至少在8GB以上

Lucene和ES的关系

  1. Lucene只是一个库,必须使用Java作为开发语言将他集成到应用中,使用起来十分复杂
  2. ElasticSearch也是使用Java开发并使用Lucene作为其核心来实现所有索引和搜索功能,它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,让全文搜索变得简单

ES和Mysql对比理解

MySQL Elastic Search
Database Index
Table Type
Row Document
Column Field
Schema Mapping
Index Everything is indexed
SQL Query DSL
SELECT* FORM table… GET http://…
UPDATE table SET… PUT http://…
  • 关系型数据库中schema定义了表,字段以及表和字段之间的关系。与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引json文档、是否需要分词处理、如何进行分词处理等等
  • Mysql主要用途:存储数据,用来完成强一致性,保证ACID的数据,逻辑性事务性操作
  • Redis主要用途:存储数据,做缓存
  • ES主要用途:存储数据,提供全文检索

ES核心概念

  1. 索引Index:ES中的索引类似关系型数据库中的数据库,里面存放用户文档数据,因为ES是封装的Lucene,所以底层还是由Lucene的一个或者多个索引组成,数据的增删改查也是由底层的Lucene完成,ES中的分片或副本实际上就是一个Lucene索引
  2. 文档Document:文档是ES中存储数据的主体,ES中所有操作都是建立在文档的基础上的,每个文档都是由各种Field组成,每一个Field有一个名称和一个或多个值构成,文档展示给用户就是一个JSON对象
  3. 类型Type:ES中Type是一种逻辑上的概念,类似关系型数据库中的表,每个文档都属于某一种类型,如果没有定义类型会有默认值,ES每个索引可以包含多种类型。现在ES5.0之后,就不推荐使用Type了,全部叫_doc
  4. 映射Mapping:映射类似关系型数据库中的schema,用于定义field的属性,如字段类型、是否分词等,这里有一点和关系型数据库不同的是ES会在用户没有定义字段属性的情况下,自动嗅探该字段的类型进行自动识别
  5. 集群Cluster:多个ES节点工作在一起组成一个集群,ES对于集群的支持几乎是无缝的
  6. 节点Node:一个ES实例就是一个节点,说的再简单点,一台部署了ES服务器的机器就是一个节点,同时一台机器如果硬件资源允许也可以同时启动多个ES实例,ES中每个节点都和集群(如果是多个节点的集群)中的其他节点相互通信,了解多有文档存储位置并能转发用户的请求到对应的数据节点上
  7. 分片Shard:因为ES是分布式架构,类似有HDFS的存储方式,所以数据被打散存储在集群的多个节点上,一个分片实际上就是底层Lucene的一个索引,这里说分片指的是ES中的主分片,分片的方式是ES自动完成,用户可以指定分片的数量,主分片一旦指定就不能修改,因为ES打散数据的方式和索引创建时指定的主分片数量有关,后期改变会导致分片中的数据不可搜索
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值