ElasticSearch

Elastic官网:[https://www.elastic.co/cn/]

Elastic有一条完整的产品线及解决方案:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。

什么是 ElasticSearch

Elasticsearch官网:[https://www.elastic.co/cn/products/elasticsearch]

Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了具有 HTTP Web 界面和无架构 JSON 文档的分布式,多租户能力的全文搜索引擎。Elasticsearch 是用Java 开发的,根据 Apache 许可条款作为开源发布。

Elasticsearch具备以下特点:

分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)

Restful风格,一切API都遵循Rest原则,容易上手

近实时搜索,数据更新在Elasticsearch中几乎是完全同步的

kibana

什么是Kibana?

Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。

而且还提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。

操作

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。

对比关系:

索引(indices)--------------------------Databases 数据库

类型(type)-----------------------------Table 数据表

文档(Document)-------------------------Row 行

字段(Field)----------------------------Columns 列

详细说明:

概念

说明

索引库(indices)

indices是index的复数,代表许多的索引

类型(type)

类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念

文档(document)

存入索引库原始的数据。比如每一条商品信息,就是一个文档

字段(field)

文档中的属性

映射配置(mappings)

字段的数据类型、属性、是否索引、是否存储等特性

另外,在SolrCloud中,有一些集群相关的概念,在Elasticsearch也有类似的:

索引集(Indices,index的复数):逻辑上的完整索引

分片(shard):数据拆分后的各个部分

副本(replica):每个分片的复制

要注意的是:

Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。

Spring Data Elasticsearch

Spring Data Elasticsearch是Spring Data项目下的一个子模块。

Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。

它使得使用数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得容易。这是一个总括项目,其中包含许多特定于给定数据库的子项目。这些令人兴奋的技术项目背后,是由许多公司和开发人员合作开发的。

Spring Data 的使命是给各种数据访问提供统一的编程接口,不管是关系型数据库(如MySQL),还是非关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从而简化开发人员的代码,提高开发效率。

Spring Data Elasticsearch的页面:[https://projects.spring.io/spring-data-elasticsearch/]

特征:

支持Spring的基于@Configuration的java配置方式,或者XML配置方式

提供了用于操作ES的便捷工具类ElasticsearchTemplate。包括实现文档到POJO之间的自动智能映射

利用Spring的数据转换服务实现的功能丰富的对象映射

基于注解的元数据映射方式,而且可扩展以支持更多不同的数据格式

根据持久层接口自动生成对应实现方法,无需人工编写基本操作代码(类似mybatis,根据接口自动得到实现)。当然,也支持人工定制查询

Elasticsearch 中的倒排索引是什么?

倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。

倒排索引是 一种像数据结构一样的散列图,可将用户从单词导向文档或网页。

它是搜索引擎的核心。其主要目标是快速搜索从数百万文件中查找数据。

文章作者: 已删除用户
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yida
Mark Interview
喜欢就支持一下吧