ElasticSearch学习

什么是ElasticSearch?

  • 专注于搜索的非关系型数据库

  • 根据用户的搜索关键字,然后特定的算法,从互联网检索指定的信息反馈

搜索引擎框架

Lucence

  1. 开发语言是Java

  1. 提供了完整的索引和搜索引擎

  1. 不支持实时搜索,从创建索引到可以搜索的中间需要一定的时间

  1. Lucence是一个框架,需要跟Java集成,熟练运用Lucence非常复杂

Apache Solr

  1. 开发语言是Java,是Apache基于Lucence开发的一个全文搜索的服务

  1. 支持通过HTTP利用XML加载到一个搜索集合中

  1. 缺点建立索引时搜索效率下降,实时索引搜索效率不高

Elasticsearch

  1. 分布式,基于Lucence构建的RESTful搜索引擎

  1. 支持通过HTTP使用JSON 进行数据检索

  1. 能够对大容量的数据进行实时维护

Elasticsearch和Solr

  • 在Solr之前提出了实时搜索(Near Real Time Search)

  • 如果使用的是JSON那么Elasticsearch是很好的选择,Solr使用的是schema.xml和solrconfig.xml都有很好的文档记录

  • Solr用于文本搜索,Elasticsearch用于分词和过滤,而不一定是文本搜索

  • 两者都是功能丰富的搜索引擎,Elasticsearch使用更简单,Solr上手需要更多的工作和知识

我们需要的数据在数据库中都有,为什么还要使用搜索引擎?

  1. 搜索引擎可以更好搜索非结构化的文本

  1. 索引维护的方面,一般我们不会用数据库存文本字段,新增和修改都需要重新构建索引非常的麻烦

  1. 当搜索数量变大的时候,适合使用搜索引擎

  1. 需要灵活的全文搜索

Elasticsearch结构

  • 数据库 - 索引(index)

  • 表 - 类型(type)

  • 数据行 - 文档(document)

  • 数据列 - 字段(field)

约定 : 一个索引只能有一个类型,并且类型名固定为(_doc)

倒排索引

  1. 将数据添加到es中,就开始执行

  1. 对数据类型为text的字段进行分词,得到词根

  1. 将词根存到倒排索引表中,并与文档映射起来通过ID

  1. 用户搜索关键字,es对这些关键字从倒排索引里进行匹配

  1. 匹配成功获取文档ID集合,然后根据文档ID去查询内容并返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值