Elasticsearch快速入门和环境搭建

内容概述

本文内容主要集中在应用层,通过下面几个部分介绍当前最流行的搜索工具:Elasticsearch,了解这些内容后,可以快速开始使用它。

什么是Elasticsearch,为什么要使用它?

基础概念:节点,索引,类型映射和文档

本地环境搭建,创建第一个index

常用RESTful Api示例

什么是Elasticsearch,为什么要使用它?

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。

它基于Lunece实现,使用java语言编写。Lunece是一个优秀的搜索引擎库,但它使用起来非常复杂。

Elasticsearch通过对 Lunece的封装,隐藏了复杂性,提供了使用简单的RESTful Api。

同时也实现了分布式集群特性,具有存储数据大,查询性能好,扩展方便等特点。

为什么要使用它

在业务开发中,基于ES的特性,通常有下面这些场景需要使用它:

存储大量数据。通过在使用mysql存储的时候,数据的单位是G。使用ES的时候,数据的单位是T。由此可以看出ES使用于大数据量的存储场景,基于分布式特性,它也支持备份和容灾,并且可以很容易水平扩展容量。

分词搜索引擎。ES具有强大的分词能力,可以支持高性能的实时搜索。

高效数据分析。ES提供的聚合分析功能,可实现对保存的大量数据的近实时统计分析。

基础概念简介

要使用ES,需要了解几个最基本的概念,节点(node),索引(index),类型映射(mapping)和文档(doc)。

节点(node)

节点是组成ES集群的基本单位,每个节点是一个运行的ES实例。每个物理机器上可以有多个节点,使用不同的端口和节点名称。

节点按主要功能可以分为三种:主节点(Master Node),协调节点(Coordianting Node)和数据节点(Data Node)。下面简单介绍下:

主节点:处理创建,删除索引等请求,维护集群状态信息。可以设置一个节点不承担主节点角色

协调节点:负责处理请求。默认情况下,每个节点都可以是协调节点。

数据节点:用来保存数据。可以设置一个节点不承担数据节点角色

索引(index)

索引是ES中的逻辑概念,是文档的容器。对ES的操作,基本都是对索引操作,一个ES集群中,可以创建多个索引。

索引定义了一组文档的数据模型和处理方法。每个索引可以有多个主分片和副本分片,分别保存在不同的节点。

主分片的作用是对索引的扩容,使一个索引的容量可以突破单机的限制。

副本分片是对数据的保护,每个主分片对应一个或多个副本分片,当主分片所在节点宕机时,副本分片会被提升为对应的主分片使用。

一个主分片和它的副本分片,不会分配到同一个节点上。

一个索引的分片数在创建时指定,如果要修改需要重建索引,代价很高。

类型映射(mapping)

mapping定义了一个索引中,文档保存的每个字段的数据类型。根据数据类型的不同,在添加文档时对每个字段的处理也不同。

例如,对text类型的字段,会先使用分词器分词,生成倒排索引,用于之后的搜索。对keyword类型的字段,不会分词,搜索时只能精确查找。

一个简单的mapping示例如下:

{ "javalogs": { //索引名称 "mappings": { "properties": { "log_content": { //text类型,分词,用于之后的分词索引 "type": "text" }, "date": {//时间类型 "type": "date" }, "log_level": { //keyword类型,不分词 "type": "keyword" }, "ip": { "type": "keyword" } } } } }

在6.x版本中,每个索引中还可以有多个type,区分不同的mapping。在7.x中,type被取消,每个索引只有一个type:_doc

文档(doc)

文档是Elasticsearch中的最小单位,每个索引都是有数量众多的文档组成的。

文档中包含多个字段,每个字段的类型由mapping定义。

在一个索引中每个文档都有一个唯一id,可以在添加时指定,也可以自动生成。

下面通过一张图来描述,节点(node),索引(index)和文档(doc)之间的关系。

Elasticsearch快速入门和环境搭建

本地环境搭建,创建第一个index

一切知识都要通过实践掌握,所以在了解基本的概念和逻辑后,下面就进入实践环节。

这里推荐使用docker来搭建本地开发环境,docker对应windows和mac系统都有桌面版本,使用非常方便。因为网络限制,直接使用docker官方仓库拉取镜像会很慢,所以在安装完成后,需要在设置中将仓库的地址替换为国内源,这里推荐https://docker.mirrors.ustc.edu.cn,速度很快,设置如下:

{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ] }

Elasticsearch快速入门和环境搭建

下面我们使用docker安装Elasticsearch和kibana镜像,kibana是es官方配套的可视化分析工具,使用它的页面dev tools可以很方便的通过api操作es。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydzjp.html