Elastic Search的基本介绍

想要查询数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是非常庞大的搜索引擎,它们几乎搜索了互联网开放的所有网页和数据。然而对于我们自己的业务数据而言,肯定就没有必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便搜索和检索。Elastic Search就是不二之选,它是一个全文搜索引擎,可以快速地存储、搜索和分析海量数据。

Elastic Search是一个开元的搜索引擎,建立一个全文搜索引擎库Apache Lucene 基础之上。

那么Lucene又是何物?Lucene可能是目前存在的。不管是开源还是私有的,拥有最先进、高性能和全功能搜索引擎功能的库。但也仅仅是一个库。要用上Lucene,我们需要编写Java并引入Lucene包才可以,而且我们需要对信息检索有一定程度的理解才能明白Lucene是怎样工作的,理解起来没那么简单哟。

那么为了解决这个问题,Elastic Search就诞生了。Elastic Search也是使用Java编写的,它的内部使用Lucene做索引和搜索,但是它的目标是使全文检索变得简单,相当于对Lucene的一层封装,它提供了一套简单的RESTFul API来帮助我们实现存储和检索。

所以Elastic Search仅仅就是一个简易版的Lucene封装吗?那就大错特错了。Elastic Search不仅仅是Lucene,并且也不仅仅只是一个全文搜索引擎,还可以这样描述它:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到成百上千台服务器,处理P8级结构化或非结构化数据

Elastic Search的安装

我们可以到Elastic Search的官网下载Elastic Search:官网.(此处无力吐槽国外的镜像地址是真的真的慢呀~)。传送门传送[华为云Elastic Search镜像](https://mirrors.huaweicloud.com/elasticsearch/ 华为云) | [华为云Kibana](https://mirrors.huaweicloud.com/kibana/ Kibana)

首先把安装包下载下来并解压。然后运行binelasticsearch(Mac或Linux)或者binelasticsearch.bat(windows)

Elastic Search的相关概念

在Elastic Search中有几个基本的概念。如节点、索引、文档等等。下面来分别介绍下这些概念。

Node和Cluster

Elastic Search本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个Elastic Search实例。

单个Elastic Search实例称为一个节点(Node).一组节点构成一个集群(Cluster)。

Index

Elastic Search会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

所以,Elastic Search数据管理的顶层单位就叫做Index(索引),其实就相当于MySQL、MongoDB等里面的数据库的概念。另外值得注意的是,每个Index(即)数据库的名字必须是小写

Document

Index里面单条的记录称为Document(文档)。许多条Document构成了一个Index。

Document使用JSON格式表示。

Field

即字段,每个Document都类似一个JSON结构,它包含了许多字段,每个字段组成了一个Document,其实就可以类比MySQL数据表中的字段。

在Elastic Search中,文档归属于一种类型(Type),而这些类型存储在索引(Index)中。可以话简单的对比图来将Elastic Search与传统的关系型数据库进行类比。

Relational DB --> Databases --> Tables --> Rows --> Columns
ElasticSearch --> Indices -->  Types  -->Documents --
原文地址:https://www.cnblogs.com/shine-rainbow/p/12203486.html