ElasticSearch基础

2018-10-26  本文已影响0人  bullion

什么是ElasticSearch

基于Apache Lucene构建的开源搜索引擎

采用Java编写,提供简单易用的RESTFul API

可轻松横向扩展,可支持PB级的结构化或非结构化数据处理

可用应用场景

海量数据分析

站内搜索引擎

数据仓库

Elasticsearch、MongoDB和Hadoop比较

如果你仅仅想要通过关键字和简单的分析,那么Elasticsearch可以完成任务;

如果你需要查询文档,并且包含更加复杂的分析过程,那么MongoDB相当适合;

如果你有一个海量的数据,需要大量不同的复杂处理和分析,那么Hadoop提供了最为广泛的工具和灵活性。

Elasticsearch和Hadoop也可以很好地一起共事的,使用Elasticsearch快速的关键词查询,Hadoop Job则能处理相当复杂的分析。

基础概念

集群和节点

索引(相当于SQL中的data base)

含有相同属性的文档集合

类型(相当于SQL中的table)

索引可以定义一个或多个类型,文档必须属于一个类型

文档(相当于SQL中的一行数据)

文档是可以被索引的基本数据单位

索引分片

每个索引都有多个分片,每个分片是一个Lucene索引

拷贝一份分片就完成了分片的备份

创建索引时默认五个分片一个备份

elasticsearch 倒排正排

    当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“华为手机”的文档,再根据打分模型进行打分,排出名次后呈现给用户。因为互联网上收录在搜索引擎中的文档的数目是个天文数字,这样的索引结构根本无法满足实时返回排名结果的要求。

    所以,搜索引擎会将正向索引重新构建为倒排索引,即把文件ID对应到关键词的映射转换为关键词到文件ID的映射,每个关键词都对应着一系列的文件,这些文件中都出现这个关键词。

上一篇 下一篇

猜你喜欢

热点阅读