Elasticsearch介绍

一、基本概念

节点(node)是一个运行着的Elasticsearch实例。

集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无 中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。

在Elasticsearch中存储数据的行为就叫做索引(indexing) ,文档归属于一种类型(type),而这些类型存在于索引(index)中 。

  • 索引(名词) 如上文所述,一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方,index的复数是indices 或indexes。
  • 索引(动词) 「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者查询。这很像SQL中的INSERT关键字,差别是,如果文档已经存在,新的文档将覆盖旧的文档。
  • 倒排索引 传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。

Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

分片(shard)是Elasticsearch在集群中分发数据的关键。把分片想象成数据的容器。文档存储在分片中,然后分片分配到你集群中的节点上。当你的集群扩容或缩小,Elasticsearch将会自动在你的节点间迁移分片,以使集群保持平衡。

分片可以是主分片(primary shard)或者是从分片(replica shard)

从分片只是主分片的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。

当索引创建完成的时候,主分片的数量就固定了,但是从分片的数量可以随时调整。

在Elasticsearch中,每一个字段的数据都是默认被索引的

默认情况下,一个索引被分配5个主分片和一个从分片

二、分布式

单播与多播模式:

多播是需要看服务器是否支持的,由于其安全性,其实现在基本的云服务(比如阿里云)是不支持多播的,所以即使你开启了多播模式,你也仅仅只能找到本机上的节点。

单播模式安全,也高效,但是缺点就是如果增加了一个新的机器的话,就需要每个节点上进行配置才生效了。

默认的方式为多播。

端口说明

9300:节点之间交互的端口

9200:数据传输端口

集群模式时,实体颜色的为主分片,暗颜色的为从分片,即备份。下图为5个主分片,一份从分片模式

扩展方式:

纵向扩展:购买更好的服务器

横向扩展:通过增加节点来均摊负载和增加可靠性。

Elasticsearch虽然能从更强大的硬件中获得更好的性能,但是纵向扩展有它的局限性。所以推荐使用横向扩展

集群健康:

有三种状态:greenyellowred

颜色 意义
green 所有主要分片和从分片都可用
yellow 所有主要分片可用,但不是所有从分片都可用
red 不是所有的主要分片都可用

故障转移:

假如当前情况为如下图,3个节点(node),3个主分片,2份从分片,NODE1为master

我们模拟测试杀掉主节点NODE1。一个集群必须要有一个主节点才能使其功能正常,所以集群做的第一件事就是各节点选举了一个新的主节点:Node 2

主分片12在我们杀掉Node 1时已经丢失,我们的索引在丢失主分片时不能正常工作。如果此时我们检查集群健康,我们将看到状态red:不是所有主节点都可用!

幸运的是丢失的两个主分片的完整拷贝存在于其他节点上,所以新主节点做的第一件事是把这些在Node 2Node 3上的从分片升级为主分片,这时集群健康回到yellow状态。这个提升是瞬间完成的,就好像按了一下开关。

ps:为什么集群健康状态是yellow而不是green?我们有三个主分片,但是我们指定了每个主分片对应两个从分片,当前却只有一个从分片被分配,这就是集群状态无法达到green的原因,不过不用太担心这个:当我们杀掉Node 2,我们的程序依然可以在没有丢失数据的情况下继续运行,因为Node 3还有每个分片的拷贝。如果我们重启Node 1,集群将能够重新分配丢失的从分片,则颜色变为green

三、部署安装

安装:

#rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

#vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

#yum install elasticsearch    #可指定版本

四、其他

常用配置:

cluster.name: ES_test

node.name: "app25"

node.master: true                                       #master节点是否开启

node.data: false                                        #data节点是否开启

path.data: /data/elasticsearch2.3

network.host: yourip                           #注意填写ip,不要写hostname;

index.number_of_shards: 6

index.number_of_replicas: 0

discovery.zen.ping.multicast.enabled: false             #单播模式,集群成员手动设置;

discovery.zen.ping.unicast.hosts: ["node1_ip:9300","node2_ip:9300","node3_ip:9300","node4_ip:9300"]

插件安装:

介绍两个对于查询你的Elasticsearch中数据非常有用的工具:

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

访问: http://elasticsearch1:9200/_plugin/kopf

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-head

访问: http://elasticsearch1:9200/_plugin/head

随着es的普及,对安全的需求越来越多,例如:

  • 账号认证,解决es匿名访问的问题。
  • 授权管理,对不同的账号按照不同维度分配(主要是索引)访问权限。
  • 只读权限,此条需求来源于 :某个Dashboard想分享给其他人,但又不想让其他人有权限修改。
  • 统一认证,单点登录。

方案选择

  • elasticsearch-http-basic :优点:此方案部署简单快速,可以解决从无到有的过程,实现了账号认证和ip白名单认证功能,缺点:功能单一,只解决了#1需求。
  • kibana-authentication-proxy :优点:此方案是针对kibana实现的认证,优点是该方案支持“ Google OAuth2, BasicAuth(multiple users supported) and CAS Authentication ”解决了需求#4中的单点登录的需求,配合方案#1中的ip白名单能基本解决需求#1和#4.缺点:目前只支持到kibana3。
  • Shield :优点:功能强大,文档丰富。缺点:收费。
  • search-guard :优点:功能丰富的免费模块,能够很好的解决需求中所有问题(除了#4中的单点登录)。缺点:部署和配置稍复杂,文档较少,门槛较高。

版本:

ElasticSearch 2.3.0

版本主要针对Lucene 5.5.0开发,同时修复了大量的2.2版本的bug。

这次更新主要增加了三大特性:重建索引的API,通过查询API,和任务管理API。

ElasticSearch  2.2.0

基于Lucene 5.4.1,修复了Elasticsearch 2.1.2和Elasticsearch 1.7.5版本中存在的很多bug,同时Elasticsearch 2.2.0增加了两个很棒的新功能:查询分析器和增强地理位置字段。这个版本增加了更加严格的安全性和修复了2.1的一个重大bug,就是在分片恢复的时 候会非常缓慢。以及许多其他的错误修复和改进。官方鼓励所有用户升级到此版本。

分析器(Profile API)

利用分析器可以得到查询的详细分 析信息,它可以让你了解和调试查询性能。查询的每一部分都独立的记录了统计时间,如多长时间重写查询,找到匹配的文档以及他们的得分情况。这个当查询慢的 时候就不需要进行猜测为什么这么慢:只要设置profile这个参数为true,你就可以得到最直接的深入的查询分析。

增强地理位置字段

地理位置字段在2.20版本中几乎进行了从写,它利用一个新的紧凑型数据结构存储在Lucene的索引中,可以增加50%的入库效率, 20-50%的查询效率,一半的存储空间和内存的占用以及更简单的映射参数。

对插件和脚本进行更严格的安全性检查

作为安全增强的一部分,Groovy和Lucene的表达式脚本语言已经移出了核心层,现在把他们作为默认的分 布式模块的插件。这样的调整可以控制这些模块的权限,已减少黑客的攻击,Elasticsearch的核心模块在未来将会更多的进行模块化处理。脚本语 言,现在预定义提供一个白名单列表,这些脚本不能读写文件,不能打开远程的连接。默认情况下,都不准许插件有特殊权限,否则必须事先声明这些权限。同时在插件安装时将会被警告有特殊权限的要求,这个时候你可以根据需要确认是否移除这些插件。

参考资料:

http://es.xiaoleilu.com/

时间: 2024-08-01 10:13:40

Elasticsearch介绍的相关文章

Elasticsearch介绍及安装部署

本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,加之github等大型的站点也采用 Elasticsearch作为其搜索服务. 二.Elasticsearch集群安装部署 1. 环境信息 主机名

【ElasticSearch】ElasticSearch介绍和安装

介绍 ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例.像Solr4一样,是基于Lucene构建的.支持时间时间索引和全文检索.官网:http://www.elasticsearch.org 它对外提供一系列基于java和http的api,用于索引.检索.修改大多数配置. 安装: 1.先安装java环境,配置环境变量. 2.下载来自http://www.elasticsearch.org/download/的 ElasticSearch.再一次,关于

12章 搜索框架ElasticSearch介绍和整合SpringBoot 4节课

1.搜索引擎知识和搜索框架elasticsearch基本介绍     简介:通过京东电商 介绍什么是搜索引擎,和开源搜索框架ElasticSearch6.x新特性介绍 前言:介绍ES的主要特点和使用场景,新特性讲解         mysql:like 模糊,性能问题, solr:针对企业,Lucene         elasticsearch:针对数据量特别大,PB,TB           纯java开发,springboot使用,5.6版本           es升级4->5版本,改动

全文搜索引擎 Elasticsearch 介绍

全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选. 它可以快速地储存.搜索和分析海量数据.维基百科.Stack Overflow.Github 都采用它. Elastic 的底层是开源库 Lucene.但是,你没法直接用 Lucene,必须自己写代码去调用它的接口.Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用. 原文地址:https://www.cnblogs.com/jacksonxi

Elasticsearch介绍,一些概念的笔记

Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 什么是搜索? 如果用数据库做搜索会怎么样? 什么是全文检索和Lucene? 什么是Elasticsearch? Elasticsearch的功能 什么是搜索 提供一种数据提取的服务 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,新闻网站,各种app IP系统的搜索:OA软件,会议管理,日程管理,项目管理,员工管理,搜索"张三", 如果用数据库做搜索会怎么样? 当如果你用电商系统搜索的时候 select

ElasticSearch介绍与安装

p { margin-bottom: 0.1in; line-height: 120% } a:link { } 什么是ES? 1基于Apache Lucene构建的开源搜索引擎 2采用java编写,提供简单易用的RESTFul API 3轻松的横向扩展,可支持PB级的结构化或非结构化数据处理 ES的应用场景? p { margin-bottom: 0.1in; line-height: 120% } a:link { } - --> { } 1海量数据分析引擎 2站内搜索引擎 3作为数据仓库使

elasticsearch 介绍

一.什么是elasticsearch Elasticsearch是一个基于Lucene的高度可伸缩的分布式的开源全文搜索和分析引擎.它允许您快速.实时地存储.搜索和分析大量数据.它通常用作底层引擎/技术,为具有复杂搜索特性和需求的应用程序提供支持.ElasticSearch是用java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎. 二.Elasticsearch的安装和配置 1.下载并解压相应的安装包,并配置ES_HOME下载链接貌似被屏蔽了,需要开代理下载.

Elasticsearch介绍和安装

用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品. 而商品的数量非常多,而且分类繁杂.如果能正确的显示出用户想要的商品,并进行合理的**过滤**,尽快促成交易,是搜索系统要研究的核心. 面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如之前大家学习过的Solr. 不过今天,我们要讲的是另一个全文检索技术:Elasticsearch. ## 1.1.简介 ### 1.1.1.Elastic Elastic官网:https://www.e

分布式搜索引擎Elasticsearch安装配置

分布式搜索引擎Elasticsearch 介绍 Elasticsearch是一个基于Lucene的开源分布式搜索引擎,具有分布式多用户能力.Elasticsearch是用java开发,提供Restful接口,能够达到实时搜索.高性能计算:同时Elasticsearch的横向扩展能力非常强,不需要重启服务,基本上达到了零配置.但是目前来说相关资料很少,同时版本更新很快,bug存在,API繁多并且变化. 概念和设计 索引 索引(index)是Elasticsearch存放数据的地方.如果你熟悉关系型