ElasticSearch介绍

  Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

  Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

  下面让我们了解下Elasticsearch的基本特征:

索引

  Elasticsearch将它的数据存储在一个或多个索引中。通过内部使用Lucene将数据写入索引或从索引中检索数据。

文档

  文档由字段组成,每个字段都有它的字段名以及一个或多个字段值,文档之间可能有各自不同的字段集合,且文档没有固定的模式或强制结构,它是文章等内容的载体。

映射

  所有文档写入索引前都需要先进行分析,用户可以设置一些参数,来决定如何将输入文本进行分析或过滤。这些参数设置就是映射,用户可以通过配置映射,达到个性化分析目的。

类型

  每个存储的文档都有与之对应的类型定义。这允许用户在一个索引中存储多种文档类型,并为不同文档类型提供不同映射。

节点

  单个Elasticsearch服务实例称为节点。很多时候一个节点足以应对大多数简单需求,但是对于复杂问题,我们也可以使用多节点的Elasticsearch集群。

集群

  当数据量或查询压力超过单机负载时,需要多个节点来协同处理,所有这些节点组成的系统称为集群。在Elasticsearch中配置一个集群可以提供无间断服务。

分片

  当数据量超过单机容量时,Elasticsearch将数据散步到多个物理Lucene索引上。这些Lucene索引称为分片(shard).

副本

  分片处理允许用户向Elasticsearch集群推送超过单机容量的数据。副本(replica)则解决了访问压力过大时单机无法处理所有请求的问题。即为每个分片创建冗余的副本,副本的存在避免了数据的丢失。

网关

  集群状态、索引设置等各种信息都会被网关收集起来,并被持久化。

Elasticsearch查询数据

  简单的词项查询、短语查询、范围查询、布尔查询、模糊查询、区间查询、通配符查询、空间查询、复杂查询、文档过滤、相似文档查询等查询方式。

一些概念解释:

  文档:索引与搜索的主要数据载体,它包含一个或多个字段,存放将要写入索引和从索引搜索出来的数据。

  字段:文档的一个片段,包含字段名称和内容。

  词项:搜索时的一个单位,代表文本中的某个词。

  词条:词项在字段中的一次出现,包含词项的文本、开始和结束的位移以及类型。

文档评分

  查询和文档评分是相匹配的,得分越高的文档出现在查询的前面。不同查询的文档得分没有可比性,这是因为文档得分依赖多个因子,除了权重和查询本身的结构,还包括匹配的词频数目,词项所在字段,以及用于查询规范化的匹配类型等。

  下面介绍下文档得分的因子:

  文档权重:索引期赋予某个文档的权重值。

  字段权重:查询期赋予某个字段的权重值。

  协调因子:基于文档中词项命中个数的协调因子,一个文档命中了查询中的词项越多,得分越高。

  逆文档频率:一个基于词项的因子,用来告诉评分公式该词项有多么罕见,逆文档频率越低,词项越罕见。

  长度范数:每个字段的基于词项个数的归一化因子。一个字段包含的词项数越多,该因子的权重就越低。这就意味着评分更喜欢包含更少词项的字段。

  词频:一个基于词项的因子,用来表示一个词在某个文档中出现了多少次。词频越高,文档得分越高。

  查询范数:一个基于查询的归一化因子,它等于查询中词项的权重平方和。查询范数使不同查询的得分能相互比较。

简单概念就介绍到这里了~

 

posted @ 2020-05-26 22:50  夏日的向日葵  阅读(262)  评论(0编辑  收藏  举报